• Чемпионы мира — о спортивном программировании



      DataArt давно дружит с командой ИТМО по спортивному программированию и помогает ей. Этим летом в гости в наш петербургский центр разработки пришли Илья Збань, Иван Белоногов и Владимир Смыкалов. Чемпионы мира 2017 года рассказали о том, как именно программисты соревнуются между собой, о тренировочных сборах, любимых задачах и сильнейших соперниках.

      Олимпиада по программированию


      Главное соревнование программистов — международная студенческая олимпиада под эгидой ACM (ACM-ICPC, или просто ICPC) — проходит с 1970-х, а в виде, близком к сегодняшнему, оформилась в 1989 году. Олимпиада предназначена для студентов и аспирантов, за редким исключением к соревнованиям не допускают программистов старше 24-х лет. К тому же, испытывать силы в финале можно только дважды, а в региональных отборах разрешается участвовать всего пять раз. На ранних этапах, проходящих по всему миру, соревнуются тысячи команд. Около сотни лучших доходят до финала.
      Читать дальше →
      • +16
      • 8,2k
      • 1
    • Генерируем произвольные последовательности на выводах платы Raspberry Pi

      • Tutorial


      Автор: Николай Хабаров, Embedded Expert DataArt, евангелист технологий умного дома.

      В этой статье я расскажу, как написать обычное user space-приложение на Python для современного ARM-процессора с ОС Linux для генерирования сложных последовательностей импульсов на выводах платы. Суть идеи — использовать DMA-модуль процессора для копирования из предварительно подготовленного буфера в памяти в GPIO с высокой точностью по времени.

      Когда речь заходит о необходимости сгенерировать сложную последовательность импульсов, например, для шаговых двигателей, обычно используют старые добрые простенькие микроконтроллеры с установленной специальной операционной системой реального времени или вообще без операционной системы. Реализация при этом, в лучшем случае, написана на C++. Сейчас процессоры шагнули далеко вперед и имеют массу преимуществ: производительность, возможность использования операционной системы Linux со всей инфраструктурой и ПО, а также высокоуровневых языков программирования, таких как Python. И все же современные микроконтроллеры для генерирования сложных последовательностей на выводах GPIO, как правило, не используют.

      Я реализовал генерацию импульсов для управления шаговыми двигателями проекта PyCNC — проекта контроллера машин с ЧПУ, станков, 3D-принтеров, полностью написанного на Python и запускаемого на современном ARM-процессоре на плате Raspberry Pi.

      Статья может быть полезна желающим реализовать генерацию сложных последовательностей установки уровней на выводах одного или нескольких GPIO на других высокоуровневых языках программирования, используя DMA-модули других процессоров.
      Читать дальше →
    • Google I/O 2017: мои впечатления и комментарии коллег

        Автор: Елена Федорова, руководитель департамента Human resource marketing, DataArt, Воронеж



        C 2009 года я возглавляю комьюнити Google Developer Group в Воронеже, кроме того, в 2016 мы организовали сообщество для девушек в IТ Women Techmakers Voronezh. Так что пропустить очередную конференцию Google I/O я, конечно, не могла. Для меня Google I/O — не просто анонсы крутейших новинок и возможность прямо сегодня заглянуть в ближайшее будущее, но и ощущение общего движения, общение с коллегами и друзьями по сообществу.

        Немного статистики по Google-комьюнити:

        • Около 600 активных GDG-групп в 102 странах.
        • 3610 тематических событий за последние полгода.

        Мой отчет с прошлогодней конференции можно прочитать здесь. На этот раз я собрала комментарии коллег и, дополнив их собственными впечатлениями, постаралась выделить пять интересных особенностей Google I/O 2017.
        Читать дальше →
        • +14
        • 4,9k
        • 2
      • Надежда Морошкина: «Вы же не подбираете команду по знакам Зодиака?»



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

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

          — Сама идея о существовании психологических типов людей связана с глубинной потребностью в классификации?

          — Традиция эта действительно очень давняя. Попытки классифицировать людей, чтобы понять, как вести себя с ними, можно найти в античности — достаточно вспомнить разделение по типам темперамента. В клинической психологии тоже неоднократно делались более или менее успешные попытки связать, например, соматотип с определенным психотипом. Общая же идея в том, что у человека есть набор постоянных личностных свойств, черт или диспозиций, убеждений, установок, благодаря которым он будет вести себя сходным образом в самых разных ситуациях. И если мы сумеем каким-либо образом эти постоянные характеристики измерить, это позволит предсказывать поведение человека и в принципе объяснит нам, почему люди могут вести себя по-разному. Сами же попытки описать человека и определить набор его свойств базировались на самых разных основах.
          Читать дальше →
        • Победителем первого GameDev-хакатона DataArt стала команда из Киева



            48 часов девять команд, представлявших отдельные центры разработки DataArt или распределенных между городами, создавали собственные HTML5-игры.

            «Все началось с идеи Макса Князева, нашего фронтенд-разработчика, который написал на нашу рассылку edu.coordination, — рассказал координатор хакатона Александр Дудин. — Он предложил провести внутренний хакатон для всего DataArt».

            По словам самого Максима, изначально он думал о хакатоне как о способе напомнить коллегам о важных внутренних и R&D-проектах, где часто не хватает людей со специальными навыками: «Я предложил собрать тех, кто сейчас загружен не полностью, и в таком приятном формате обучить их нужным скиллам и придать им ускорение. Но коллеги, подхватившие идею, сразу нашли поддержку у нашей iGaming-практики, и хакатон решили переориентировать на игры».

            iGaming-практика появилась не так давно и сейчас активно развивается. Поэтому для нее возможность познакомиться с людьми, заинтересованными в играх и находящимися в разных локациях, оказалась особенно интересной. Изначально организаторы надеялись собрать около 30 участников, но отклик ожидания превзошел — зарегистрировалось для участия 60 человек, а более 40 прошли хакатон от начала до конца. «Думаю, сыграло роль и то, что приз в итоге выбрали классный. DataArt предоставил для авторов лучшей игры очки виртуальной реальности Oculus Rift», — уточняет Дудин.
            Читать дальше →
            • +14
            • 3,9k
            • 2
          • Благотворительность напрямую: детям — игрушки, взрослым — права на рисунки



              Разработчик из DataArt Виктор Борисов придумал и реализовал что-то похожее на банк данных и социальную сеть в одном приложении. Причем не коммерческом, его проект — инструмент прямой благотворительности. Дети подают заявки на игрушки, прикрепляя к ним свои рисунки, а благотворители выполняют заявки и получают права на изображения. Хобби-проект Виктора называется «Игрушка за рисунок. Платформа для проведения конкурсов детских рисунков через интернет», а подробнее о нем рассказал сам автор.

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

              «Игрушка за рисунок» предлагает уже с ранних лет прилагать усилия для достижения цели, искать альтернативные пути, но добиваться успеха. Если родителям конкретная игрушка кажется дорогой, для другого человека цена такого подарка может быть вполне посильной. Остается подать заявку на игрушку, дать ссылку на интернет-магазин, где благотворитель может купить этот товар, написать о себе и регулярно добавлять к заявке свои рисунки.
              Читать дальше →
            • GDG DevFest Voronezh: виртуальные котята, беседы с колонкой и Mannequin Challenge

                Воронежское сообщество Google Developer Group, которому в ноябре исполнилось уже семь лет, в пятый раз собралось на конференции GDG DevFest Voronezh. Конференция длилась два дня: первый посвятили докладам и выступлениям, второй — «железному» воркшопу.


                Сначала давайте посмотрим короткое видео, как все прошло.



                Читать дальше →
              • Стильный код на Python, или учимся использовать Flake8

                • Tutorial

                Автор: Анатолий Соловей, developer

                Язык программирования Python очень востребован на современном рынке, он развивается изо дня в день, и вокруг него сложилось активное сообщество. Во избежание конфликтов между разработчиками-питонистами, создатели языка написали соглашение PEP 8, описывающее правила оформления кода, однако даже там отмечено, что:
                Many projects have their own coding style guidelines. In the event of any conflicts, such project-specific guides take precedence for that project.

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

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

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

                На помощь в этом случае приходят линтеры — инструменты, контролирующие оформление кода в проекте. Именно они помогают поддерживать его чистоту и, в нашем случае, предотвращать создание коммитов, которые могут содержать ошибки. Я для контроля качества использую Flake8 и сейчас постараюсь объяснить, почему выбрал именно его, и расскажу, как его настроить, чтобы получить максимальный результат. Заинтересовались? Добро пожаловать под кат.
                Читать дальше →
              • Игра по правилам



                  Игорь Кожуренко — лидер направления iGaming в DataArt — о традиционных и онлайн-казино, регулировании рынка азартных игр в разных странах, о моде на виртуальную реальность и поиске художников и инженеров.

                  Об индустрии iGaming


                  Компании, предоставляющие игровые онлайн-сервисы, всегда готовы к быстрому внедрению инноваций, и многие идеи впервые воплощаются именно в iGaming. Этому есть несколько причин. Первая — борьба за клиентов: чем лучше сервис, тем, понятное дело, больше будет пользователей. Вторая — кэш-флоу. Успешные компании этого рынка не нуждаются в дополнительных инвестициях, у них есть деньги, и они с удовольствием инвестируют их в разработку и развитие, если понимают, что это действительно нужно.
                  Читать дальше →
                • SQL: пара приемов в SELECT-запросах

                  • Tutorial

                  Автор: Юрий Цыганенко, Senior QA

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

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

                  От тестировщика требуется построить SQL-запрос, выдающий N пользователей, у которых интервалы между датами заказов будут наибольшими.

                  Аналогичные задачи и их разбор — под катом.
                  Читать дальше →
                Самое читаемое