Как стать автором
Обновить
165.38
Рейтинг

C++ *

Типизированный язык программирования

Сначала показывать
Порог рейтинга

Создание Aimbot для Half-Life 2

Блог компании RUVDS.com C++ *Реверс-инжиниринг *Игры и игровые консоли
Перевод

В этом посте мы расскажем о процессе создания aimbot — программы, автоматически прицеливающейся во врагов в игре жанра «шутер от первого лица» (FPS). Создавать будем aimbot для игры Half-Life 2, работающей на движке Source. Aimbot будет работать внутри процесса игры и использовать для своей работы внутренние функции игры, подвергнутые реверс-инжинирингу (в отличие от других систем, работающих снаружи игры и сканирующих экран).
Читать дальше →
Всего голосов 44: ↑44 и ↓0 +44
Просмотры 10K
Комментарии 13

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

Ненормальное программирование *Программирование *C++ *Кодобред
Tutorial

Всем привет! Решил на выходных продолжить писать свой домашний проект и наступила пора реализовать платформозависимый код. Самым простым вариантом было бы описать классы в *.h файле, а в зависимости от платформы, Закрытые поля засунуть под #define. При этом, саму реализацию по конкретным платформам разнести по *.cpp файлам и включать их в компиляцию в зависимости от текущей платформы. Но... мне не нравится как выглядит описание класса с #define, поэтому я решил убрать препроцессор и оставить в описании класса только интерфейс. И да, я не пользовался абстрактными классами и pimpl, всё еще хуже :-)

Читать далее
Всего голосов 12: ↑9 и ↓3 +6
Просмотры 5.8K
Комментарии 56

Межмодульный анализ C и C++ проектов в деталях. Часть 1

Блог компании PVS-Studio C++ *Компиляторы *

Начиная с PVS-Studio 7.14, для C и C++ анализатора появилась поддержка межмодульного анализа. В этой статье, которая будет состоять из двух частей, мы расскажем, как устроены похожие механизмы в компиляторах и раскроем некоторые технические подробности реализации в нашем статическом анализаторе.

Читать далее
Всего голосов 18: ↑16 и ↓2 +14
Просмотры 2K
Комментарии 2

Компьютеры быстры, но вы этого не знаете

Блог компании Sportmaster Lab Высокая производительность *Программирование *C++ *
Перевод

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

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

Смотрели ли вы эти видео?

  1. Сравнение размера Вселенной в 3D
  2. Измеряем богатство Джеффа Безоса в рисе

Второе нравится мне больше всего. Ежедневно я съедаю по чашке риса, так что измеряю состояние Джеффа не только наглядно, но и своим желудком.

Совсем недавно я внёс несколько оптимизаций в код, что помогло мне интуитивно понять, насколько быстро может работать компьютер. И я решил, что этим нужно поделиться.
Читать дальше →
Всего голосов 84: ↑80 и ↓4 +76
Просмотры 31K
Комментарии 229

PVS-Studio для проверки лабораторных работ на C и C++

Блог компании PVS-Studio Программирование *C++ *Отладка *C *

C++ error: "pointer being freed was not allocated


Встретил очередной вопрос на Stack Overflow от человека, изучающего язык C++. Количество подобных вопросов можно сократить, используя PVS-Studio. Человек сразу может получить ответ, не отвлекая других.

Читать дальше →
Всего голосов 12: ↑10 и ↓2 +8
Просмотры 1.8K
Комментарии 7

Создание HTTP-запросов на C++

Блог компании RUVDS.com Программирование *C++ *HTML *
Перевод

В этой статье я покажу вам, как создавать HTTP-запросы к REST-серверу с помощью библиотеки C++ Request, написанной Ху Нгуеном. При её написании мистер Нгуен во многом ориентировался на принципы проектирования из Python Requests, поэтому для тех, кто использовал или знаком с Python Requests, C++ Requests окажется вполне понятна.
Читать дальше →
Всего голосов 36: ↑33 и ↓3 +30
Просмотры 7.9K
Комментарии 7

GitHub Copilot

Python *Java *C++ *GitHub *
Из песочницы

В современном компьютерном и интернет-мире всё взаимодействие, не только пользователей, а в общем со структурой выстраивается с помощью различных программ, интерфейсов, и подобных им оптимизированных для простого человека сложных разработках. Но кто же занимается непосредственно разработкой различного вида software? Первый ответ, который придет в голову обывателю – это конечно же ПРОГРАММИСТ. Если обобщить в понятие программист всевозможные виды и подходы к разработке, можно согласиться с ответом обывателя. Давайте рассмотрим всех инженеров, backend, frontend разработчиков как единое понятие – программист.

Читать далее
Всего голосов 28: ↑13 и ↓15 -2
Просмотры 18K
Комментарии 50

Краткий обзор библиотеки so5extra с дополнениями для SObjectizer-5

Open source *Программирование *C++ *

О проекте SObjectizer-5 мы рассказываем на Хабре уже давно и более-менее регулярно. А вот о сопутствующем ему проекте so5extra речь заходит гораздо реже и вскользь. Между тем so5extra развивается уже пять лет (как же быстро летит время) и на днях мы зафиксировали очередную версию. Что представляется хорошим поводом представить вашему вниманию обзор библиотеки so5extra, с акцентом на разнообразие реализованных в ней типов почтовых ящиков (mbox-ов в нашей терминологии).

Читать далее
Всего голосов 8: ↑6 и ↓2 +4
Просмотры 529
Комментарии 0

JIT-компилятор Python в 300 строк

Python *Программирование *C++ *Компиляторы *

Может ли студент второго курса написать JIT - компилятор Питона, конкурирующий по производительности с промышленным решением? С учётом того, что он это сделает за две недели за зачёт по программированию.

Как оказалось, может, но с нюансами.

Читать далее
Всего голосов 138: ↑137 и ↓1 +136
Просмотры 21K
Комментарии 34

Игра: найди ошибку в C++ коде

Блог компании PVS-Studio Программирование *C++ *Кодобред C *

Игра PVS-Studio: найди ошибку в C++ коде
Авторы анализатора PVS-Studio предлагают вам проверить свою внимательность и развлечься. Попробуйте быстро отыскать баг в фрагменте исходного кода и ткнуть в него мышкой.

Читать дальше →
Всего голосов 34: ↑32 и ↓2 +30
Просмотры 6.7K
Комментарии 15

Как я встраивал JS в свой игровой движок

JavaScript *C++ *Разработка игр *

Писать на С++ игры долго и дорого, но при этом по перфомансу получается хорошо. Но далеко не всё в играх, требовательно к производительности, особенно 2D. Например всякие окошечки не производят тяжелых расчетов внутри. А на больших проектах они могут занимать до 80% всего объема кода. И на С++ есть проблемы на продакшене - если где-то крешится или бажит, приходится перезаливать приложение.

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

Совсем недавно прикрутил JS к своему движку. Кому интересны подробности - добро пожаловать под кат.

Читать далее
Всего голосов 14: ↑12 и ↓2 +10
Просмотры 5.7K
Комментарии 21

Тем, кто учится программировать и решил написать вопрос на Stack Overflow: «Почему код не работает?»

Блог компании PVS-Studio Программирование *C++ *Отладка *C *

PVS-Studio Online


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


Эту заметку меня побудила написать дискуссия "Segmentation fault when converting char * to char **" на сайте Stack Overflow. Человек, изучающий программирование, интересуется, что не так с его кодом.

Читать дальше →
Всего голосов 20: ↑15 и ↓5 +10
Просмотры 5.3K
Комментарии 9

Эволюция лямбд в C++14, C++17 и C ++20

Блог компании OTUS Программирование *C++ *
Перевод

Лямбда-выражения — одна из самых популярных фич современного C++. С тех пор, как они были представлены в C++11, лямбды проникли практически в каждую кодовую базу на C++. Цель этой статьи — рассказать об основных эволюционных этапах в истории лямбда-выражений.

Читать далее
Всего голосов 32: ↑26 и ↓6 +20
Просмотры 9K
Комментарии 33

C++ разведка кросс-компиляции Linux->Windows

C++ *Assembler *Реверс-инжиниринг *

Эта история началась когда удобный для меня инструмент VSCode из за одного плагина на борту стал не совсем удобен. А именно, «natizyskunk.sftp» плагин, который позволяет подключится по протоколу (S)FTP к серверу, и вносить изменения на сервер, просто сохранив файл. Всё нечего, если бы настройки подключения к серверам не хранились в корне отдельно взятого проекта. Когда у тебя с десяток проектов, ещё можно потерпеть, но более 70 проектов и они все на разных серверах, то перенос и добавление в каждый из проектов актуальной настройки, например пароль, который периодически меняется, заставляет как минимум раздражённо искать подходящую настройку и с комбинацией клавиш Ctrl+C, Ctrl+V, менять устаревшие настройки или добавлять новые. В дальнейшем оказалось, что коллеги пользуются другими идентичными плагинами с названиями «liximomo.sftp», «doujinya.sftp-revived».

Читать далее
Всего голосов 6: ↑5 и ↓1 +4
Просмотры 3.1K
Комментарии 10

Ключевое слово «volatile» C/C++

C++ *C *
Из песочницы
Volatile — ключевое слово языков C/C++, которое информирует компилятор о том, что значение переменной может меняться из вне и что компилятор не будет оптимизировать эту переменную. Примерно такое описание volatile я встречал во многих книгах и туториалах, и каждый раз мне не удавалось понять что же хотел сказать автор. На понимание этого я потратил n-ое количество времени, и вот специально для этого, чтобы упростить жизнь новичкам в понимании этого аспекта, решил написать как раз таки эту статью.
Читать дальше →
Всего голосов 31: ↑8 и ↓23 -15
Просмотры 13K
Комментарии 69

Концепты и модули cpp. Взгляд сo стороны undefined разработчика

Программирование *C++ *

В 2002 году Алекс А. Степанов проводит лекцию в адоби: STL and Its Design Principles - где упоминает кейворд concept (там прям целый слайд про концепты). В 2009 году в свет выходит книга Elements of programming (Stepanov, McJones) и где по-моему нет ни одного алгоритма без концептов. В 2011 новый стандарт языка с++11, где в отложенных (прям очень жаль) фичах фигурируют концепты. В 2014 мир видит творенье Страуструпа - Tour of C++, где глава 5.4 названа Concepts and Generic Programming, хотя язык не поддерживает кейворд concept. Годом ранее, в 2013, Андрю Саттон публикует бумагу Concepts Lite. В стандарте с++14 появляется новая фича digit separators, но нет концептов. В 2017 на реддите обсуждают c++17 и предлагают отдохнуть еще три года.

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

Читать далее
Всего голосов 17: ↑8 и ↓9 -1
Просмотры 2.9K
Комментарии 6

Релиз языка программрования NewLang

Блог компании Timeweb Cloud Программирование *C++ *Компиляторы *Машинное обучение *

КДПВ


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


Основной особенностью языка является простой, логичный и не противоречивый синтаксис, который основан не на использовании зарезервированных ключевых слов, а на строгой системе грамматических правил с использованием знаков препинания (в список которых входят и операторы языка).


Новое по сравнению с прошлым выпуском:


  • Реализованы все основные алгоритмические конструкции: проверка условий, различные варианты циклов, сравнение по образцу, прерывание последовательности команд и возврат данных, обработка ошибок и т.д.
  • Переработан основной синтаксис для отдельных языковых конструкций.
  • Реализованы большинство операций с переменными, включая операторы раскрытие списков и тензоров.
  • Серьезно переработана система встроенных типов, реализованы функции для их преобразования и для определения данных (последнее можно назвать data comprehensions).
  • Добавлены новые тесты и пр.
Читать дальше →
Всего голосов 16: ↑13 и ↓3 +10
Просмотры 12K
Комментарии 31

В мире антропоморфных животных: PVS-Studio проверил Overgrowth

Блог компании PVS-Studio C++ *Разработка игр *

Недавно в сети появилась новость о том, что был открыт исходный код игры Overgrowth. Мы не смогли пройти мимо и проверили его качество с помощью PVS-Studio. Давайте же вместе посмотрим, где больше интересного экшена: в игре или в её исходном коде!

Читать далее
Всего голосов 22: ↑18 и ↓4 +14
Просмотры 2.1K
Комментарии 1

Оптимизация GUI на Qt

Высокая производительность *Программирование *C++ *Qt *DevOps *
Tutorial

Как правило, при создании desktop-приложений на платформе Qt не возникает проблем, связанных с медленностью работы GUI. Qt – платформа достаточно надежная, неплохо вылизанная по всем параметрам, в том числе и по скорости работы. Однако всё же иногда бывают ситуации, когда из-за обилия виджетов графический интерфейс немного притормаживает, и это печально). В этой статье я приведу один частный пример простого графического интерфейса и покажу, как за два шага можно сначала ускорить его в 11 раз, а потом и в целых 34 раза. Вдобавок к этому, я постараюсь немного осветить механизм принятия решения для таких оптимизационных задач, постараюсь показать направление мыслей для правильного решения. Поехали!

Читать далее
Всего голосов 17: ↑17 и ↓0 +17
Просмотры 5.5K
Комментарии 23

C++20: корутины cppcoro

Блог компании OTUS Программирование *C++ *
Перевод

Библиотека cppcoro от Льюиса Бейкера (Lewis Baker) дает нам то, чего не дает нам C++20 — библиотеку абстракций корутин C++, основанную на Coroutines TS.

Читать далее
Всего голосов 15: ↑12 и ↓3 +9
Просмотры 4.9K
Комментарии 6

Вклад авторов

Работа

QT разработчик
11 вакансий
Программист C++
103 вакансии