• Релиз CLion 2017.3: существенные улучшения поддержки C++, интеграция с Valgrind Memcheck и Boost.Test и многое другое

      Привет, Хабр!

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

      image


      Коротко об основных улучшениях для тех, кто не хочет много читать:

      • Поддержка языка C++

        • Улучшения в таких подсистемах парсера, как list initialization и name lookup
        • Поддержка расширений специфичных для компилятора Microsoft Visual C++
        • Поддержка макроса __COUNTER__
        • И не только!
      • Новые инструменты и фреймворки

        • Valgrind Memcheck
        • Boost.Test
        • CMake 3.9, GDB 8.0, LLDB 5.0
      • Существенные переработки и расширение возможностей в настройке компилятора, окружения, CMake, отладчика, и пр.
      • Возможность запуска почти произвольной функции main, иконки для запуска функций main и тестов
      • Возможность разрабатывать на Kotlin/Native в CLion

      Можно прямо сейчас скачать бесплатную 30-дневную версию с нашего сайта и попробовать новые возможности (для этого мы даже подготовили специальный небольшой демо-проект). А ниже мы поговорим об улучшениях более подробно.
      Читать дальше →
    • Шаблон проектирования Entity-Component-System — реализация и пример игры

      • Перевод
      image


      В этой статье я хочу обсудить шаблон проектирования «сущность-компонент-система» (Entity-Component-System, ECS). По этой теме можно найти много информации в Интернете, поэтому я не буду глубоко вдаваться в объяснения, а больше расскажу о моей собственной реализации.

      Часть 1: Реализация шаблона Entity-Component-System на C++


      Начнём сначала. Полный исходный код моей реализации ECS можно найти в репозитории на github.

      Entity-Component-System, в основном используемый в играх — это шаблон проектирования, обеспечивающий огромную гибкость в проектировании общей архитектуры программного обеспечения[1]. Такие большие компании, как Unity, Epic или Crytek используют этот шаблон в своих фреймворках, чтобы предоставить разработчикам очень богатый возможностями инструмент, с помощью которого они могут разрабатывать собственное ПО. Прочитать более широкое обсуждение по этой тематике можно в этих постах [2,3,4,5].
      Читать дальше →
      • +15
      • 4,6k
      • 6
    • Как программисты с PVS-Studio ошибки в проектах искали

        Picture 3Недавно сайт Pinguem.ru совместно с командой PVS-Studio устраивали конкурс, в котором программистам было необходимо в течение месяца использовать статический анализатор PVS-Studio для нахождения и исправления ошибок в коде open-source проектов. Благодаря их стараниям, программы в мире стали чуточку безопаснее и надежнее. В статье мы рассмотрим парочку наиболее интересных ошибок, которые были найдены при помощи PVS-Studio.
        Читать дальше →
        • +45
        • 6,9k
        • 6
      • API BIM-системы Renga

          Всем привет! В этой статье я расскажу об API BIM-системы Renga. О самой системе можно почитать тут, здесь же можно запросить версию для некоммерческого использования. Если вкратце, то Renga это трехмерная система автоматизированного проектирования в архитектуре и строительстве. В ней проектировщик/архитектор/конструктор работает с информационной моделью здания, получает ассоциативные чертежи, спецификации, в общем, создает проект.



          Зачем нужно API CAD-системы


          Сначала, как водится, немного водички.

          Разработка расширений для CAD систем довольно распространена, поскольку в любом проектировании существуют различные направления, разделы и стандарты оформления проектной документации, которые требуют разной узкоспециализированной функциональности. Кроме того существуют задачи интеграции с программами расчета, визуализации, документооборота и многими другими. Выход — создание подключаемых модулей, расширяющих функциональность системы.
          Читать дальше →
        • Восемь возможностей C++17, которые должен применять каждый разработчик

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


            Вам также может быть интересна статья Десять возможностей C++11, которые должен использовать каждый C++ разработчик
            Читать дальше →
          • Стоимость операций в тактах ЦП

            • Перевод
            Всем доброго! Вот мы и добрались до тематики С++ на наших курсах и по нашей старой доброй традиции делимся тем, что мы нашли достаточно интересным при подготовке программы и то, что будем затрагивать во время обучения.

            Инфографика:



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

            Подробнее
            Реклама
          • Разработка инструмента веб-дизайнера на основе веб-приложения (Figma). Перевод

            image

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

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

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


            Читать дальше →
          • Как Discord каждый день изменяет размер 150 млн картинок с помощью Go и C++

            • Перевод


            Хотя Discord — это приложение для голосового и текстового чата, каждый день через него проходит более ста миллионов изображений. Конечно, мы бы хотели, чтобы задача была простой: просто перенаправить картинки вашим друзьям по всем каналам. Но в реальности доставка этих изображений создаёт довольно большие технические проблемы. Прямая ссылка на картинки выдаст хосту с картинкой IP-адреса пользователей, а большие изображения расходуют много трафика. Чтобы избежать этих проблем, требуется промежуточный сервис, который будет получать изображения для пользователей и изменять их размер для экономии трафика.

            Встречайте Image Proxy


            Для выполнения этой работы мы создали сервис Python и креативно назвали его Image Proxy. Он загружает картинки с удалённых URL, а затем выполняет ресурсоёмкую задачу по ресайзингу с помощью пакета pillow-simd. Этот пакет работает удивительно быстро, используя где только возможно для ускорения ресайзинга инструкции x86 SSE. Image Proxy будет получать HTTP-запрос, содержащий URL, чтобы загрузить, изменить размер и, наконец, выдать окончательное изображение.
            Читать дальше →
          • Повторное использование кода — как это бывает на практике

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

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

            Это указывает нам на изъяны в теории о том, что переиспользование всегда является желанной и благородной целью.
            Читать дальше →
          • Conan: менеджер зависимостей для C/C++

            • Tutorial
            image

            Здравствуйте. Сегодня речь пойдёт про Conan — современный менеджер зависимостей для C/C++. Если Вы уже активно работаете с ним, то навряд ли найдёт что-нибудь новое для себя. Иначе — прошу под кат.
            Читать дальше →
          Самое читаемое