• Как мы уместили таблицы в экран смартфона и унифицировали в рамках дизайн-системы

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

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

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

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

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



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

      В этой заметке поделимся тем, как мы подходили к решению задач перевода таблиц в списки и унификации представления разных списков.
      Читать дальше →
    • Это пост с докладами и видео по MS SQL Server

        В июне мы провели митап по Microsoft SQL Server — докладчики из Яндекс.Денег, «Лаборатории Касперского», AwaraIT и SpbDev поделились с коллегами опытом. А теперь выкладываем видео в общий доступ.



        Под каждым видео — таймкоды ключевых мест, но советуем смотреть, слушать и внимать целиком.


        Data-driven подписки в SSRS


        Под катом еще три доклада
        • +26
        • 3,5k
        • 8
      • Использование FPC-библиотеки «InternetTools» в Delphi

          На самом деле, статья несколько шире – она описывает способ, позволяющий прозрачно задействовать и многие другие библиотеки (причём не только из мира Free Pascal), а InternetTools выбрана из-за своего замечательного свойства – это тот случай, когда (как ни удивительно) отсутствует Delphi-вариант с такими же широкими возможностями и удобством использования.

          Эта библиотека предназначена для извлечения информации (парсинга) из веб-документов (XML и HTML), позволяя использовать для указания нужных данных как языки запросов высокого уровня, такие как XPath и XQuery, так и, в качестве одного из вариантов, предоставляя прямой доступ к элементам дерева, построенного по документу.
          Читать дальше →
          • +17
          • 2,2k
          • 6
        • Создание сайта на Delphi, или Как использовать uniGUI по-минимуму

            uniGUI – это библиотека, позволяющая создавать веб-приложения в классической Delphi-манере, посредством визуальных компонентов, причём, что является немаловажным, в большинстве случаев она полностью скрывает от разработчика всю клиентскую (браузерную) «кухню»: не требуется знать ни HTML, ни CSS, ни JavaScript, а вся разработка ведётся лишь на одном языке – Delphi.

            Если смотреть на картину издалека, то вырисовываются 3 сценария использования библиотеки:

            1. Наиболее благоприятный, для которого она в целом и создавалась, когда описанная сильная, радужная сторона uniGUI проявляет себя в полной мере – перенос (полный или частичный – неважно) настольных приложений в веб, что возможно проделать быстро, привычным способом и с высоким качеством только в случаях, когда поставляемые с библиотекой компоненты сразу обеспечивают требуемый функционал – к примеру, фильтрацию и сортировку по столбцам таблицы.
            2. Очень похож на первый и в какой-то мере вытекает из него, с тем лишь отличием, что штатный набор компонентов не покрывает все необходимые по ТЗ возможности; если снова взять для примера таблицу, то таким требованием может стать многоуровневая группировка строк по произвольным столбцам. Если удастся найти сторонние решения с нужными возможностями, то сценарий сводится к первому, а если нет, то потребуется самостоятельная доработка, что уже весьма нетривиально, т. к. здесь не обойтись не просто без знаний JavaScript, а ещё и глубокого владения фреймворком Ext JS, на основе которого работает браузерная сторона uniGUI.
            3. Последний сценарий может показаться странным и даже чужеродным для тех, кто применял на практике в основном первый, – речь об отказе от всей богатой палитры визуальных компонентов и разработке клиентской части веб-приложения исключительно с использованием родной для неё триады – HTML, CSS и JavaScript. Данная статья покажет, в каких случаях подобное допустимо, а также продемонстрирует способ реализовать задуманное.
            Читать дальше →
          • Книга «Чистая архитектура. Искусство разработки программного обеспечения»

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

              Роберт Мартин дает прямые и лаконичные ответы на ключевые вопросы архитектуры и дизайна. «Чистую архитектуру» обязаны прочитать разработчики всех уровней, системные аналитики, архитекторы и каждый программист, который желает подняться по карьерной лестнице или хотя бы повлиять на людей, которые занимаются данной работой. Все архитектуры подчиняются одним и тем же правилам! Роберт Мартин (дядюшка Боб)
              Читать дальше →
            • Встречаем Windows Machine Learning — WinML

                Искусственный интеллект и машинное обучение — две хайповые тенденции последних лет. Необходимые для AI&ML объемы вычислений обычно выполняются в ЦОДах на специальном высокопроизводительном и энергоэффективном оборудовании (например, серверах с TPU). Эволюция циклична, и маятник качнулся обратно, в сторону вычислений на периферийных устройствах, таких как ПК, планшеты и IoT. В частности, это приведет к повышению скорости реакции устройств на голосовые команды и повысит комфортность общения с персональными ассистентами.



                WinML — это новый набор API-интерфейсов, который позволит разработчикам использовать все возможности любого устройства Windows 10 для вычислений предварительно обученных моделей машинного обучения и загруженных в приложение в формате Open Neural Network Exchange (ONNX).
                Читать дальше →
              • Наташа — библиотека для извлечения структурированной информации из текстов на русском языке

                  Есть стандартная задача извлечения именованных сущностей из текста (NER). На входе текст, на выходе структурированные, нормализованные объекты, например, с именами, адресами, датами:



                  Задача старая и хорошо изученная, для английского языка существует масса коммерческих и открытых решений: Spacy, Stanford NER, OpenNLP, NLTK, MITIE, Google Natural Language API, ParallelDots, Aylien, Rosette, TextRazor. Для русского тоже есть хорошие решения, но они в основном закрытые: DaData, Pullenti, Abbyy Infoextractor, Dictum, Eureka, Promt, RCO, AOT, Ahunter. Из открытого мне известен только Томита-парсер и свежий Deepmipt NER.

                  Я занимаюсь анализом данных, задача обработки текстов одна из самых частых. На практике оказывается, что, например, извлечь имена из русского текста совсем непросто. Есть готовое решение в Томита-парсере, но там неудобная интеграция с Питоном. Недавно появилось решение от ребят из iPavlov, но там имена не приводятся к нормальной форме. Для извлечения, например, адресов («ул. 8 Марта, д.4», «Ленинский проезд, 15») открытых решений мне не известно, есть pypostal, но он чтобы парсить адреса, а не искать их в тексте. C нестандартными задачами типа извлечения ссылок на нормативные акты («ст. 11 ГК РФ», «п. 1 ст. 6 Закона № 122-ФЗ») вообще непонятно, что делать.

                  Год назад Дима Веселов начал проект Наташа. С тех пор код был значительно доработан. Наташа была использована в нескольких крупных проектах. Сейчас мы готовы рассказать о ней пользователям Хабра.
                  Наташа — это аналог Томита-парсера для Питона (Yargy-парсер) плюс набор готовых правил для извлечения имён, адресов, дат, сумм денег и других сущностей.
                  В статье показано, как использовать готовые правила Наташи и, самое главное, как добавлять свои с помощью Yargy-парсера.
                  Читать дальше →
                • 6 строк глубокого обучения

                  • Перевод
                  Привет, Хабр! Такое понятие, как «Глубокое обучение», существует с 1986 года, когда его впервые употребила Рина Дехтер. Развитие технология получила в 2006 после выхода публикации Джеффри Хинтона об эффективном предобучении многослойной нейронной сети. Сегодня deep learning часто живет в связке с распознаванием речи, пониманием языка и компьютерным зрением. Под катом вы узнаете про использование алгоритмов глубокого обучения в SQL. Заглядывайте!

                  Читать дальше →
                  • +14
                  • 9,7k
                  • 1
                • Все нормально, падаем

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



                    Под катом — полный драматизма рассказ о попытке внедрения гибкой методологии управления в крупной enterprise-компании.
                    Читать дальше →
                    • +19
                    • 9,1k
                    • 3
                  • Domain Driven Design на практике

                    • Tutorial
                    Эванс написал хорошую книжку с хорошими идеями. Но этим идеям не хватает методологической основы. Опытным разработчикам и архитекторам на интуитивном уровне понятно, что надо быть как можно ближе к предметной области заказчика, что с заказчиком надо разговаривать. Но не понятно как оценить проект на соответствие Ubiquitous Language и реального языка заказчика? Как понять, что домен разделен на Bounded Context правильно? Как вообще опредилить используется DDD в проекте или нет?

                    Последний пункт особенно актуален. На одном из своих выступлений Грег Янг попросил поднять руки тех, кто практиукует DDD. А потом попросил опустить тех, кто создает классы с набором публичных геттеров и сеттеров, располагает логику в «сервисах» и «хелперах» и называет это DDD. По залу прошел смешок:)

                    Как же правильно структурировать бизнес-логику в DDD-стиле? Где хранить «поведение»: в сервисах, сущностях, extension-методах или везде по чуть-чуть? В статье я расскажу о том, как проектирую предметную область и какими правилами пользуюсь.
                    Читать дальше →
                  • Как мы настроили поиск с помощью Elasticsearch и Logstash по данным MSSQL

                      Делимся подробностями, как мы сделали хороший поиск по закрытой корпоративной соцсети в условиях, когда:


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


                      Критерий хорошего поиска для нас звучит так: даже если пользователь ввел запрос с опечаткой или неточно указал название группы, то всё равно нашёл её.


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


                      Читать дальше →
                      • +19
                      • 5,8k
                      • 5
                    • Типичные взаимные блокировки в MS SQL и способы борьбы с ними

                        Чаще всего deadlock описывают примерно следующим образом:
                        Процесс 1 блокирует ресурс А.
                        Процесс 2 блокирует ресурс Б.
                        Процесс 1 пытается получить доступ к ресурсу Б.
                        Процесс 2 пытается получить доступ к ресурсу А.
                        В итоге один из процессов должен быть прерван, чтобы другой мог продолжить выполнение.
                        Но это простейший вариант взаимной блокировки, в реальности приходится сталкиваться с более сложными случаями. В этой статье мы расскажем с какими взаимными блокировками в MS SQL нам приходилось встречаться и как мы с ними боремся.


                        Читать дальше →
                      • Наш вариант теста на знание SQL

                          У нас, как и во многих других организациях, проводится тестирование соискателей при поступлении их на работу. Основу тестирования составляет устное собеседование, но в некоторых случаях, даются также практические задания. Несколько дней назад, Руководство попросило меня подготовить набор задач на знание SQL.
                          Читать дальше →
                        • SQL Server 2017 JSON



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

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

                            Такое пафосное вступление имеет определенные на то основания, поскольку долгое время на Microsoft Connect поддержка работы с JSON на SQL Server была одной из самых востребованных фич. Шли годы и неожиданно данный функционал реализовали вместе с релизом SQL Server 2016. Забегая вперед скажу, что вышло очень даже хорошо, но Microsoft не остановилась на этом и в SQL Server 2017 существенно улучшили производительность и без того быстрого JSON парсера.
                            Подробнее
                          • 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

                            Читать дальше →
                          • Нащупает ли дно российская космонавтика в 2018?

                              Прошедший год стал праздником на улице критиков Роскосмоса — частная компания SpaceX выполнила сравнимое с государственным космическим агентством количество пусков (точные цифры будут вызывать споры из-за принадлежности «Зенита» и пусков с Куру). При этом все пуски SpaceX были коммерческими, и компания на них зарабатывала деньги, а из российских пусков только в четырех у основной полезной нагрузки был коммерческий заказчик. Конечно, нельзя напрямую сравнивать частную компанию и государственное агентство, но еще совсем недавно Россия не только лидировала по количеству запусков, но и серьезную их долю занимали коммерческие. В таких условиях самым важным становится вопрос — продолжится ли падение дальше, или же мы увидим в 2018 году признаки улучшения ситуации?


                              Фото: Роскосмос
                              Читать дальше →
                            • Топ-10 университетов Европы для изучения IT

                                image

                                Рекрутинговая компания PageGroup утверждает, что программист — самая востребованная специальность в мире, профессионалов в этой области ждут в 24 странах. Конкуренция среди программистов, правда, тоже велика, поэтому для успешной работы нужно постоянное улучшение навыков. Для этой цели подойдет учеба в топовом европейском университете, причем повышать уровень знаний там можно при материальной поддержке учебного заведения.

                                Команда StudyQA с удовольствием расскажет, какие университеты подойдут для этой цели. В нашей сегодняшней подборке собраны 10 лучших европейский университетов для IT-специалистов со стипендиями.
                                Читать дальше →
                              • Заблуждения программистов относительно времени

                                • Перевод
                                За последние пару лет я потратил много времени на дебаггинг чужих тестов. Это была интересная работа, иногда расстраивающая, но всегда поучительная. Кто-то может подумать, что в тестах нет багов, но конечно баги есть везде, и тесты не исключение.

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

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


                                  На фоне новостей в области ИИ обычные стартапы как-то теряются. На arxiv.org в геометрической прогрессии растут исследования по machine learning (computer vision, natural language processing, etc.). AlphaGo Zero порабощает Землю разгромно обыгрывает прошлые версии сети и не требует человеческого участия в процессе тренировки. Нейросеть NVIDIA меняет на фото время года и погодные условия, а умельцы с помощью выложенного алгоритма меняют в фильмах актрис на… других актрис.


                                  Как на фоне роста новостей по ИИ остаться жизнеспособным проектом? Когда-то Рэй Курцвейл предсказывал: «В 2029-м году программа не только сможет полностью пройти тест Тьюринга, а сделает это лучше многих реальных собеседников. Компьютер за тысячу долларов будет на порядки превосходить мозг среднего человека в большинстве областей». Однако сейчас эксперты говорят, что есть шансы получить сильный ИИ «в течение 5 лет с вероятностью 80 % и в течение 10 лет с вероятностью 99 %».


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

                                  Читать дальше →
                                • Умная «Квартира»

                                  Всем привет! Наконец-таки подошел к концу капитальный ремонт в квартире, и в связи с этим хочу поделиться с Вами, реализованным проектом «Умной квартиры» с базовыми возможностями управления освещением, подогревом теплых полов, контроля температуры и влажности помещений, и прочими плюшками. Описательная часть будет выполнена в виде мануала (так проще излагать что ли).

                                  image
                                  Читать, если интересно!