• OCR-конвейер для обработки документов

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



      Первичным переводом документа в электронную форму является его сканирование или фотографирование, в результате которого получается графический файл в виде фотографии или скана. Однако такие файлы, особенно высокого разрешения, занимают много места на диске, и текст в них невозможно редактировать. В связи с этим, целесообразно извлекать текст из графических файлов, что успешно делается с применением OCR.
      Читать дальше →
    • Экспресс-курс создания масок для Instagram

        Не так давно на одном из наших проектов накануне релиза появилось несколько свободных дней (потому что Apple review team не могла понять, что для тестирования приложения с функцией чата недостаточно одного телефона/аккаунта. Хинт: не ленитесь снимать поясняющие видео — проверено, помогает!).

        Как раз в это же время я готовил корпоративные поздравительные маски для Instagram по случаю гендерных праздников (23 февраля и 8 марта) и решил, что дополнительная маска будет не лишней и для проекта нашего заказчика.


        Читать дальше →
        • +11
        • 2,2k
        • 1
      • Accessibility. Как сделать приложение доступным для пользователей с ограниченными возможностями


          Обо мне


          photo with me
          Меня зовут Аня Ковтун, я UX/UI дизайнер и работаю в компании Arcadia с 2015 года. Помимо проектирования пользовательских интерфейсов, я общаюсь с заказчиками и занимаюсь составлением требований для команды разработчиков.


          Предыстория


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


          Что такое accessibility? А как пользователи с ограниченными возможностями взаимодействуют с вебом? Пользуются специальными приложениями? Или могут воспринимать тот же контент, что и мы? Кто заботится о них? Кто является ответственным за то, чтобы они могли полноценно воспринимать контент? Как можно сделать контент доступным? Это сложно? Можем ли мы помочь?


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

          Читать дальше →
        • Быстрый расчет формул из Excel на C#

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

            Быстрый расчет формул из Excel на C#

            Если вам необходимо выбрать производительную библиотеку для работы с Excel-файлами или вы ищете решение для расчета сложных финансовых (и не только) данных с удобным инструментом управления и визуализации формул из коробки, добро пожаловать под кат.
            Читать дальше →
          • CMI5, или Жизнь после SCORM



              В детстве я мечтала стать учителем. Детская мечта частично сбылась: мои взрослые рабочие будни проходят «в школе». И хотя я не учитель в реальном классе, а программист системы дистанционного обучения (СДО), цель у меня та же: сделать обучение доступным, а его процесс интересным. Правда, программисту для этого необходимо умение «жонглировать» не мелом и указкой, а стандартами дистанционного обучения. Я предлагаю совершить путешествие во времени на 20 лет назад, чтобы узнать, как эволюционировали стандарты дистанционного обучения и какие средства в арсенале программистов СДО есть сейчас.
              Поехали!
            • V&V не значит вендетта



                На протяжении последних шести лет я занимаюсь разработкой и приёмочным тестированием самых разных по сложности и размеру приложений для проведения и сопровождения клинических исследований. Big data, огромное количество визуализаций и представлений, хранилища данных, ETL и тому подобное. Продуктом пользуются врачи, менеджмент и люди, которые участвуют в контроле и наблюдении за исследованиями.

                Для приложений, которые оказывают или могут оказать прямое влияние на жизнь и здоровье пациентов, обязателен формальный процесс приёмочного тестирования. Результаты приёмочного тестирования вместе с остальным пакетом документации предоставляются для аудита в FDA (Food and Drug Administration, США). FDA выдаёт разрешение на использование приложения в качестве инструмента контроля и проведения клинических исследований. В общей сложности в моей команде разработано, протестировано и отправлено в продакшен более тридцати приложений. В данной статье я коротко расскажу о приёмочном тестировании и развитии инструментов в одной отдельно взятой маленькой группе.

                Note: я не претендую на истину в последней инстанции и прекрасно понимаю, что большая часть того, о чём я пишу, — монолог Капитана Очевидность. Но я надеюсь, что описанное окажется полезным и начальному уровню, и командам, которые сталкиваются с этим в повседневной работе, или хотя бы порадует тех, у кого процессы попроще.
                Читать дальше →
                • +10
                • 1,6k
                • 2
              • Приглашаем на конференцию Azov Developers Meetup 2019 — 19 октября в Таганроге



                  19 октября проводим в Таганроге пятую ежегодную конференцию Azov Developers Meetup. Приглашаем всех желающих, регистрация бесплатна!

                  Начнем в 9 утра в конгресс-отеле «Таганрог» на ул. Дзержинского, 161 с традиционного приветственного кофе и регистрации. Как и в прошлые годы, будет 2 потока,
                  В первом потоке — доклады по фронтенд, мобильной разработке, управлению, DevOps, QA и безопасности. Второй поток целиком состоит из трёх воркшопов: по профессиональному выгоранию, фасилитации и канбану.
                  Читать дальше →
                • Тестируем SQL Server код с tSQLt

                    FYI: эта статья представляет собой дополненную версию моего доклада на SQA Days #25.

                    Опираясь на свой опыт общения с коллегами, могу утверждать: тестирование кода в БД не является распространённой практикой. Это может нести в себе потенциальную опасность. Логику в БД пишут такие же люди, какие пишут «обычный» код. Следовательно, там так же могут присутствовать ошибки, и они так же могут повлечь за собой негативные последствия для продукта, бизнеса и потребителей. Неважно, идёт ли речь о хранимых процедурах, помогающих бэкенду, или о ETL, преобразующих данные в хранилище — риск есть, и тестирование может его существенно снизить. О том, что такое tSQLt и как оно помогает нам в тестировании кода в SQL Server, я и хочу вам рассказать.


                    Читать дальше →
                    • +16
                    • 5,8k
                    • 4
                  • Meeting Room L̶i̶t̶t̶l̶e̶ Helper v 2

                      Данная статья подробно описывает этапы разработки мобильного приложения Meeting Room Helper: от зарождения идеи до релиза. Приложение написано на Kotlin и построено по упрощённой MVVM архитектуре, без использования data binding. Обновление UI-части происходит с помощью LiveData-объектов. Причины отказа от data binding подробно разобраны и объяснены. В архитектуре используется ряд интересных решений, позволяющих логично разбить программу на небольшие файлы, что в конечном счете упрощает поддержку кода.


                      Читать дальше →
                      • +10
                      • 2,2k
                      • 5
                    • Screenplay — не Page Object'ом единым

                        Со временем вносить изменения в любой продукт становится сложнее, и растёт риск не только зарелизить новые фичи, но и сломать старые. Часто вместо того, чтобы руками проверять весь проект, этот процесс стараются автоматизировать. Если поговорить с людьми, которые занимаются тестированием интерфейсов, походить по конференциями, становится понятно, что в мире веб-тестирования правит Selenium, а в качестве организации кода подавляющее большинство используют Page Object.


                        Вот только мне, как программисту, этот паттерн и код, который я видел у разных команд, почему-то никогда не нравился — в голове звучали буквы SOLID. Но я уже был готов смириться с тем, что тестировщики пишут код, как им удобно, из-за отсутствия альтернатив, как где-то год назад, на Angular Connect, услышал я доклад, посвящённый тестированию Angular приложений c использованием Screenplay паттерна. Теперь хочу поделиться.


                        Читать дальше →
                        • +14
                        • 8,1k
                        • 1
                      • Введение в реактивное программирование

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

                          Цель — познакомить с основными концепциями реактивного программирования и показать, что не всё так сложно и страшно, как может показаться на первый взгляд.

                          image
                          Источник
                          Читать дальше →
                        • Приглашаем на конференцию Azov Developers Meetup 2018 — 13 октября в Таганроге



                            13 октября в Таганроге пройдёт очередная, уже четвертая, ежегодная конференция Azov Developers Meetup 2018. Приглашаем всех желающих, регистрация бесплатна!

                            Начнем в 9 утра в конгресс-отеле «Таганрог» на ул. Дзержинского, 161 с традиционного приветственного кофе и регистрации. Как и в прошлом году, доклады поделены на 2 потока, так что каждый сможет выбрать для себя самое интересное.

                            • 2 доклада посвящены нетехническим темам — soft skills (эмоциональный интеллект) и нематериальной мотивации персонала.
                            • В области разработки расскажем о data science в life sciences, диагностике производительности .NET-приложений, о контейнеризации в микросервисной архитектуре и о том, как решить, какой выбрать способ работы с данными в хранилище — ORM или SQL.
                            • Тему UI/UX раскроют доклады об Accessibility и о гармонии в библиотеках UI-компонентов.
                            • История о тестировании в условии ограниченных ресурсов будет интересна не только специалистам по QA, но и менеджерам проектов.
                            • Наконец, специальный гость конференции расскажет об использовании искусственного интеллекта в программах поддержки школьников и учителей.

                            По традиции, помимо лекций мы приготовили активности и призы для участников. И, конечно, презентации и видеозаписи выступлений докладчиков будут доступны на сайте мероприятия.
                            Читать дальше →
                          • JMeter 4.0. Что нового?

                              11 февраля состоялся релиз новой мажорной версии 4.0 Apache JMeter. Поскольку мы используем этот инструмент для нагрузочного тестирования на многих проектах, мы не могли оставить данное событие без внимания.

                              Предыдущий мажорный релиз (версия 3.0) был выпущен чуть меньше двух лет назад (для сравнения, версия 2.0 вышла аж в 2004-м!). Также за последние 2 года было выпущено несколько минорных релизов (версии 3.1-3.3). Это показывает нам, как JMeter развивается, чтобы шагать в ногу с новыми технологиями и соответствовать нуждам разработчиков.

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



                              Под катом самые важные изменения в JMeter 4.0, о которых вам нужно знать.
                              Читать дальше →
                              • +12
                              • 7,7k
                              • 4
                            • Meeting Room Little Helper

                                Сегодня я расскажу вам о приложении, которое создавалось в «Аркадии» для удобства бронирования переговорных комнат.



                                Есть два основных сценария использования этого приложения:

                                1. Поиск свободной комнаты
                                Ежедневно в компании проходит множество митингов, переговорки бронируют менеджеры, разработчики и сотрудники HR-отдела. Поиск комнаты для митинга может быть довольно долгим и рутинным занятием. Чтобы понять, какая из комнат свободна в данный момент, необходимо зайти в календарь Outlook (или открыть дверь, отвлекая внимание участников проходящего совещания), просмотреть полное расписание по комнатам, найти свободный слот времени и создать appointment. За это время кто-то из сотрудников может забронировать комнату, и тогда необходимо начинать поиск заново. Гораздо удобнее сделать бронирование нажатием одной кнопки при помощи приложения, заранее получив подсказки о статусе комнат.

                                2. Ad hoc бронирование
                                Довольно часто возникает ситуация, когда нужно собраться минут на 15, чтобы коротко обсудить текущие задачи по проекту. В этом случае нет смысла занимать комнату на целый час, да может и не быть свободных слотов на выбранное время. Но если остаётся хотя бы 10 минут до следующего митинга, приложение позволит забронировать комнату, и для короткого митинга этого может быть вполне достаточно. Также иногда возникает ситуация, когда комната была забронирована на долгий срок, например, 2 часа, но митинг завершился раньше. В этом случае по завершении митинга можно нажать на кнопку отмены и освободить комнату.
                                Читать дальше →
                              • Раздача фронтенда через CDN

                                В мире современных веб-технологий все стремительно развивается и меняется. Пару лет назад совершенно нормальным было по запросу клиента рендерить DOM структуру на сервере (например, при помощи PHP) и отдавать уже полностью сформированную страницу. Сейчас все чаще появляются сайты c полным отделением фронтенда (Angular, React, Vue.js...) от бэкенда (некие API эндпоинты), где на фронтенде почти весь контент формируется посредством скриптов, а сервер отдает только данные по запросу. Тут можно было бы упомянуть SSR (Server Side Rendering), но не об этом данное произведение.

                                В любые времена перед разработчиками и владельцами сайтов стояла непростая задача: доставить контент как можно быстрее, как можно большему количеству клиентов. Одно из самых правильных решений — использовать CDN (Content Delivery Network) для раздачи статичных файлов. В случае с динамическим рендером страниц на сервере мы должны были ограничиваться небольшим списком объектов, которые можно было разместить в CDN: таблицы стилей, файлы скриптов, изображения. Однако, фронтенд, написанный на Angular (React, Vue.js...), статичен целиком, включая индексную страницу. Вот тут и возникает мысль: а почему бы не организовать раздачу через CDN всего фронтенда?

                                В данной статье пойдет речь о настройке комплексного решения для разработки, контроля версий, автоматической сборки и доставки статического сайта с использованием Gitlab CI, Amazon S3 и Amazon CloudFront. Также речь пойдет о настройке сопутствующих вещей: git, безопасное соединение по протоколу HTTPS, доменная почта, DNS хостинг, бэкенд сервер…

                                Если вас заинтересовала эта тема, добро пожаловать под кат. Осторожно! Много скриншотов.
                                Читать дальше →
                              • Приглашаем на конференцию Azov Developers Meetup — 23 сентября в Таганроге



                                  Приглашаем провести 23 сентября с нами в Таганроге на Azov Developers Meetup 2017.

                                  Приезжаем к 9 утра в конгресс-отель «Таганрог» на ул. Дзержинского, 161 попить кофе перед началом и до трёх часов дня послушать лекции о разработке. Мы расскажем о Vue.js и CQRS, попробуем найти точки соприкосновения SQL и NoSQL, поговорим о пределах совершенства кода и о настоящем Quality Assurance, развеем страхи перед интервью с заказчиком и ответим на дизайн-вопросы. Кроме того, мы пригласили на конференцию Михаила Скипского — игрока телеклуба «Что? Где? Когда?», обладателя двух «Хрустальных сов» (2010, 2016) — он расскажет о принятии решений и эффективности в малых группах.
                                  Читать дальше →
                                • Воспроизведение зашифрованных файлов с дешифровкой “на-лету” на iOS

                                    image

                                    В процессе разработки приложения на фрейворке Sencha Touch для платформы iOS потребовалось реализовать воспроизведение локальных видео и аудио файлов, которые должны быть зашифрованы на сервере перед скачиванием в память мобильного устройства. Дополнительным условием был запрет на создание дешифрованной версии файла на диске, таким образом появилась необходимость делать расшифровку и чтение данных в оперативной памяти. Поэтому стандартный плагин от Cordova для воспроизведения локальных медиа файлов не подходил, хотя опыта разработки на Objective C у меня не было, я решил создать свой, обладающий требуемым функционалом.
                                    Читать дальше →
                                    • +11
                                    • 5,3k
                                    • 2
                                  • Drupal и WordPress — сравнение, аналогии, сходства, различия

                                    Целью данной публикации является сравнение возможностей двух популярных CMS — Drupal 7 и WordPress (последней на данный момент версии 4.6). Ставилась цель рассмотреть CMS с точки зрения программиста и сравнить основные API обеих систем, провести аналогии, сделать выводы о том, какая система лучше подходит для каких задач. Публикация не претендует на полноту изложения всех возможностей CMS, а автор будет благодарен за коррективы и дополнения.
                                    Читать дальше →
                                  • Custom Video Recorder для iOS приложений

                                    • Tutorial
                                    Приложение Камера для iPhone / iPad очень удобно в использовании. Пользователь легко может переключаться из режима фотографирования на видеосъемку. В режиме видеосъемки показывается время съемки и всего одна кнопка (Старт / Стоп). К сожалению, при использовании стандартного UIImagePickerController’а нет возможности контролировать количество кадров в секунду и некоторые другие параметры. Я покажу, как, используя AVFoundation framework, получить доступ к более тонким настройкам камеры, таким как, количество кадров в секунду, качество видео, длительность записи, размер видео файла. Пользователь сразу будет видеть на экране видео в том качестве, в котором оно будет сохранено.
                                    Читать дальше →
                                    • +10
                                    • 5,3k
                                    • 9
                                  • Приглашаем на конференцию Azov Developers Meetup — 10 декабря в Таганроге


                                      10 декабря в Таганроге пройдет конференция Azov Developers Meetup 2016. Будут обсуждаться вопросы разработки высоконагруженных web приложений и систем машинного обучения, тестирования и управления проектами.

                                      Приходите, будет интересно!
                                      Читать дальше →

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