C++ — TechCave

C++ — компилируемый строго типизированный язык программирования общего назначения.

C++ — компилируемый строго типизированный язык программирования общего назначения. Поддерживает разные парадигмы программирования: процедурную, обобщённую, функциональную; наибольшее внимание уделено поддержке объектно-ориентированного программирования.

Стена группы

Загрузка...
Den
2 месяца назад
#

К чему готовиться в 2019 году: тренды в программировании



Перед вами перевод статьи пользователя под ником Constantin, опубликованной на ресурсе hackernoon.com. Под катом можно узнать, какие из языков программирования сегодня достойны того, чтобы их освоили.



Источник
Загрузка...
2 месяца назад
#

Запускаем свой нейросетевой детектор на Raspberry Pi с помощью Neural Compute Stick и OpenVINO



С распространением и развитием нейронный сетей все чаще возникает потребность их использования на встроенных и маломощных устройствах, роботах и дронах. Устройство Neural Compute Stick в связке с фреймворком OpenVINO от компании Intel позволяет решить эту задачу, беря тяжелые вычисления нейросетей на себя. Благодаря этому можно без особых усилий запустить нейросетевой классификатор или детектор на маломощном устройстве вроде Raspberry Pi практически в реальном времени, при этом не сильно повышая энергопотребление. В данной публикации я расскажу, как использовать фреймворк OpenVINO (на C++) и Neural Compute Stick, чтобы запустить простую систему обнаружения лиц на Raspberry Pi.

Как обычно, весь код доступен на
GitHub.



Источник
Загрузка...
Den
2 месяца назад
#

256 строчек голого C++: пишем трассировщик лучей с нуля за несколько часов



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

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

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

Итак, сегодня я покажу, как отрисовывать подобные картинки:



Источник
Загрузка...
2 месяца назад
#

Переход на Boost-1.65.1 и баги, которые всплыли



В прошлом году(уже почти целый год прошел) мы все–таки перешли на новую версию Boost-1.65.1, и под капотом вы найдете тройку багов boost-а, с которыми мы столкнулись. Еще важно упомянуть, что до этого у нас в ПО использовался boost -1.62.1, поскольку какие-то баги появились в boost ранее версии 1.65.1

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

Источник
Загрузка...
2 месяца назад
#

Преодоление порога 32 КБ для данных в ПЗУ микроконтроллеров AVR



Что может быть хуже костылей? Только неполно документированные костыли.



image



Перед вами скриншот из последней официальной интегрированной среды разработки для 8-битных микроконтроллеров AVR, Atmel Studio 7, язык программирования Си. Как видно из столбца Value, переменная my_array содержит число 0x8089. Другими словами, массив my_array располагается в памяти, начиная с адреса 0x8089.



В то же время столбец Type даёт нам несколько иную информацию: my_array является массивом из 4 элементов типа int16_t, расположенным в ПЗУ (это обозначается словом prog, в отличие от data для ОЗУ), начиная с адреса 0x18089. Стоп, но ведь 0x8089 != 0x18089. Какой же на самом деле адрес у массива?



Источник
Загрузка...
Den
2 месяца назад
#

История одной проблемы со Speedometer, или Как Chromium управляет памятью



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

Меня зовут Андрей Логвинов, я работаю в группе разработки рендеринг-движка Яндекс.Браузера в Нижнем Новгороде. Сегодня я расскажу читателям Хабра о том, как устроено управление памятью в проекте Chromium на примере одной загадочной проблемы, которая приводила к падению производительности в тесте
Speedometer. Этот пост основан на моём докладе с мероприятия Яндекс.Изнутри.



Источник
Загрузка...
2 месяца назад
#

Основные понятия стандартной библиотеки С++



Данная статья определяет основные понятия стандартной библиотеки С++. Она приводится для того чтобы на неё ссылаться в дальнейшем.

Наибольшей частью стандартной библиотеки С++ является библиотека STL (Standard Template Library – Стандартная Библиотека Шаблонов). Библиотека STL содержит пять основных видов компонентов:

  • контейнер (container): управляет набором объектов в памяти.

  • итератор (iterator): обеспечивает для алгоритма средство доступа к содержимому контейнера.

  • алгоритм (algorithm): определяет вычислительную процедуру.

  • функциональный объект (function object): инкапсулирует функцию в объекте для использования другими компонентами.

  • адаптер (adaptor): адаптирует компонент для обеспечения различного интерфейса.





Источник
Загрузка...
2 месяца назад
#

Simple MCerver — небольшая оболочка для сервера Minecraft



Здравствуйте. Я изучаю C++ и хочу представить свою небольшую наработку — оболочку для сервера Minecraft с открытым исходным кодом.

Источник
Загрузка...
2 месяца назад
#

Об опыте общения с генератором сигнала через QTcpSocket и SCPI



Интро

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

Об этом в статье и пойдет речь.

Источник
Загрузка...
2 месяца назад
#

Работа с API КОМПАС-3D → Урок 14 → Многострочный текст



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



Источник
Загрузка...
2 месяца назад
#

Как писать unit-тесты для акторов? Подход SObjectizer-а



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

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

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

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

Источник
Загрузка...
2 месяца назад
#

Как перестать писать прошивки для микроконтроллеров. Пример





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



Источник
Загрузка...
2 месяца назад
#

Написание системы попарно взаимодействующих частиц на C++ с использованием DirectX 11





На хабре уже есть много статей про использование вычислительных шейдеров с Unity, однако статью о использовании вычислительного шейдера на «чистом» Win32 API + DirectX 11 затруднительно. Однако эта задача ненамного сложнее, подробнее — под катом.



Для этого будем использовать:



  • Windows 10

  • Visual Studio 2017 Community Edition с модулем «Разработка классических приложений на C++»



Источник
Загрузка...
3 месяца назад
#

Полное руководство по CMake. Часть третья: Тестирование и пакетирование





Введение

Данная статья повествует о тестировании и пакетировании программ при помощи CMake — гибкого и универсального набора утилит для разработки различных программных продуктов. Строго рекомендуется прочитать первую и вторую части руководства во избежание непонимания синтаксиса и принципа работы CMake.



Источник
Загрузка...
3 месяца назад
#

История одного эксперимента с Cython и C++ vector



Одним тёплым холодным зимним вечером, хотелось согреться в офисе и проверить теорию одного коллеги, что C++ vector мог бы быстрее справиться с задачей, чем CPython list.



В компании мы разрабатываем продукты на базе Django и случилось так, что нужно было обработать один большой массив словарей. Коллега предположил, что реализация на C++ была бы гораздо быстрее, а меня не покидало чувство, что Гвидо и сообщество наверное немного круче нас в Си и возможно уже решили и обошли все подводные камни, реализовав всё гораздо быстрее.



Для проверки теории, я решил написать небольшой тестовый файл, в котором решил прогнать в цикле вставку 1М словарей одинакового содержания в массив и в vector 100 раз подряд.



Результаты хоть и были ожидаемые, но так же и внезапные.



Источник
Загрузка...
1 2 4 5

Авторизация

Пользователи

gydman
Ivan Lavkov
Андрей Подольский
Kumskov
Juan
Tutu
naikdij88
NewEXE
Георгiй Москвитинъ

GeekBrains

КАРКАМ

Нетология