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

C++ *

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

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

Как научить операционную системы «выбрасывать» С++ исключения из системных вызовов и как это можно применять

C++ *Системное программирование *Компиляторы *
Из песочницы

Эта статья написана по мотивам дипломной работы, выполненной в ВУЗе. Мне показалось, что она могла бы быть интересна и другим людям, поэтому выкладываю пересказ. В этой работе я кратко рассмотрю, как вообще работают исключения в С++, опишу, как я добавил их поддержку в простую ОС, написанную для преподавания АКОСа, какой способ передачи исключений из ядра в программы я написал. А в конце посмотрим, в каких ещё случаях ОС может бросать пользователям С++ исключения.

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

Новости

Яндекс выложил в опенсорс бету фреймворка userver

Блог компании Яндекс Высокая производительность *Open source *C++ *GitHub *
Сегодня мы анонсируем выход в опенсорс фреймворка userver для создания высоконагруженных приложений. Для нас это важный способ поделиться опытом в разработке микросервисов, который мы накопили. Вот ссылка на Гитхаб-репозиторий c исходным кодом, документацией, примерами, шаблоном для создания своих сервисов (с настроенным CI, сборкой и тестовым окружением) и сервисом динамических конфигов. Всё это опубликовано под лицензией Apache 2.0.



🐙userver позволяет быстро создавать эффективные микросервисы на языке C++ и уже много лет активно используется в Яндекс Go, Еде, Лавке, Доставке, Маркете, финтехе и других проектах. Вот из каких требований мы исходили в процессе разработки:

  • Простота. Стажёр или студент, приходя к нам, может уже через неделю написать и отправить в продакшен новый микросервис.
  • Надёжность. Многие ошибки, в том числе и связанные с многопоточностью, можно поймать на этапе компиляции. Кроме того, фреймворк даёт подсказки по исправлению проблем.
  • Полнота. В userver есть всё необходимое для тестирования, работы с разными базами данных, кеширования, логирования, трейсинга, распределённых блокировок, работы с JSON, BSON, YAML, изменения параметров сервиса на лету и так далее.

Сейчас я расскажу о том, как возникла идея userver, как фреймворк развивался, в каких задачах его сейчас используют и почему именно выход в опенсорс был логичным следующим шагом. А затем приведу пример написания нового микросервиса.
Читать дальше →
Всего голосов 173: ↑169 и ↓4 +165
Просмотры 39K
Комментарии 110

Почему в С++ массивы нужно удалять через delete[]

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

Заметка рассчитана на начинающих C++ программистов, которым стало интересно, почему везде твердят, что нужно использовать delete[] для массивов, но вместо внятного объяснения – просто прикрываются магическим "undefined behavior". Немного кода, несколько картинок и взгляд под капот компиляторов – всех заинтересованных прошу под кат.


delete_or_delete_for_array_ru/image1.png

Читать дальше →
Всего голосов 44: ↑41 и ↓3 +38
Просмотры 9.4K
Комментарии 33

Feature freeze С++23. Итоги летней встречи комитета

Блог компании Яндекс Программирование *C++ *Компиляторы *IT-стандарты *

На недавней встрече комитет C++ «прорвало», и в черновую версию C++23 добавили:

  • std::mdspan
  • std::flat_map
  • std::flat_set
  • freestanding
  • std::print("Hello {}", "world")
  • форматированный вывод ranges
  • constexpr для bitset, to_chars/from_chars
  • std::string::substr() &&
  • import std;
  • std::start_lifetime_as
  • static operator()
  • [[assume(x > 0)]];
  • 16- и 128-битные float
  • std::generator
  • и очень много другого
Подробности
Всего голосов 82: ↑81 и ↓1 +80
Просмотры 14K
Комментарии 173

Возможен ли быстрый Garbage collector на С++?

C++ *Разработка игр *
Из песочницы

Не буду долго рассусоливать о том, что такое сборщик мусора и для чего он нужен (на эту тему уже есть достаточно статей). Но хочу отметить несколько важных деталей.

Читать далее
Всего голосов 19: ↑16 и ↓3 +13
Просмотры 8.2K
Комментарии 74

Установка OpenSSL для проекта на С++

C++ *Visual Studio *
Из песочницы

Решая в целом тривиальные задачи, приходится сталкиваться с нетривиальными проблемами, и эта история, собственно, об этом.

В кои-то веки, решив написать код для себя любимого, проработал проект, установил окружение, прописал в проекте boost и пошёл писать модули.

Ничто не предвещало беды, но в процессе написания кода было обнаружено, что модуль, который запрашивал у интернета погоду, получал вместо описанного в API json'а следующее: "400 The plain HTTP request was sent to HTTPS port". Уж чем руководствовался разработчик сайта, не перенаправивший запрос без персональных данных, не знаю, но видимо хакеры хотят украсть сведения о погоде в деревне так сильно, что спать и есть не могут.

И тут я сделал манёвр, который стоил мне 50 лет. Точнее, пары бессонных ночей, так как работать тоже надо. Ничтоже сумнящийся, подключил boost::asio::ssl, написал тестовый код, который должен был проверить что теперь есть контакт, но тут моя бровь поднялась вверх в первый раз: проект перестал собираться, потому что в системе не было OpenSSL.

Как настроить openssl и не потеряться
Всего голосов 21: ↑13 и ↓8 +5
Просмотры 2.6K
Комментарии 28

Как написать свою кроссплатформенную библиотеку для хуков и не отстрелить себе ноги

Ненормальное программирование *C++ *Реверс-инжиниринг *
Recovery mode
Из песочницы

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

Конечно же написать свою!

В этой статье я расскажу что лежит внутри библиотек для перехвата x86 кода и почему оно так работает. А также - как искал баги неделями, и что из этого вообще получилось.

Читать далее
Всего голосов 20: ↑19 и ↓1 +18
Просмотры 3.4K
Комментарии 10

Из вагона направо: как работают подсказки 2ГИС

Блог компании 2ГИС C++ *API *Геоинформационные сервисы *

Весной мы добавили новую подсказку о том, в какую сторону выходить из вагона метро. Меня зовут Влад, я программист С++, и на примере этой подсказки хочу рассказать, из чего состоит жизненный цикл релиза новых фич в 2ГИС. И сколько всего происходит, когда добавляешь — казалось бы — небольшую новую строку с текстом.

Читать далее
Всего голосов 21: ↑20 и ↓1 +19
Просмотры 4.5K
Комментарии 6

Конкурс внимательности: PVS-Studio vs Хакер

Блог компании PVS-Studio Программирование *Совершенный код *C++ *C *

PVS-Studio vs Хакер


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

Читать дальше →
Всего голосов 51: ↑41 и ↓10 +31
Просмотры 3.3K
Комментарии 3

Предупреждения помогают писать лаконичный код

Блог компании PVS-Studio Совершенный код *C++ *C *

Единорог PVS-Studio ужимает слона
Некоторые предупреждения анализатора или компилятора сложно однозначно классифицировать как ложное срабатывание или указание на настоящую ошибку. Бывает, что формально анализатор/компилятор прав, но и код работает правильно. Что делать? Возможно, это повод упростить код.

Читать дальше →
Всего голосов 19: ↑15 и ↓4 +11
Просмотры 2.1K
Комментарии 4

CWE Top 25 2022. Обзор изменений

Блог компании PVS-Studio Информационная безопасность *Java *C++ *C# *

Список CWE Top 25 отражает наиболее серьёзные недостатки безопасности ПО. Предлагаю вам ознакомиться с обновлённым топом в обзоре изменений за прошедший год.


CWE_top_25_2022_ru


Читать дальше →
Всего голосов 15: ↑13 и ↓2 +11
Просмотры 1.6K
Комментарии 0

Double, Float — не вещественные числа

Python *Java *C++ *Алгоритмы *ООП *
Из песочницы

Во многих источниках тип double и float, числа с плавающей запятой/точкой зачем-то называют вещественными. Такое чувство что кто-то когда-то совершил ошибку или не внимательно написал эту глупость и все как один начали её повторять, совершенно не задумываясь о чём они говорят.

Ладно это были бы просто троечники студенты и любители, так эту ошибку говорят и те, кто обучают специалистов. И эта проблема терминологии не одного ЯП, их правда много (Java, C++, C#, Python, JS и т.д.) везде, где бы я не искал, всегда находятся статьи, ответы, лекции, где дробные числа называют вещественными!

Читать далее
Всего голосов 75: ↑24 и ↓51 -27
Просмотры 18K
Комментарии 80

Украшаем молоток: как автоматизировать разбор проблем в дебаггере

Блог компании «Лаборатория Касперского» Open source *Программирование *C++ *Отладка *
Ошибки и проблемные ситуации, которые возникают при работе высоконагруженных систем, имеют свои особенности и специфику. У нас в «Лаборатории Касперского» накопился целый ряд приемов по анализу таких ошибок. Часть приемов мы выложили в опенсорс в виде библиотеки скриптов для отладчиков, где есть в том числе JS-скрипты для WinDBG и Python-скрипты для GDB. В этой статье на живых примерах будет показано, как их использовать, и как автоматизировать хотя бы часть процесса анализа ошибок и подозрительных ситуаций.

cover
Читать дальше →
Всего голосов 12: ↑11 и ↓1 +10
Просмотры 1.4K
Комментарии 0

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

Блог компании PVS-Studio C++ *

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

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

Попытки в блог №0. Начало: embedded разработка и как я очутился на Хабре

C++ *C *Программирование микроконтроллеров *
Из песочницы

Спустя полтора года опыта работы в embedded разработке в большом соло-проекте, в который меня совсем зелёного, ещё не окончившего университет, бросили сразу после собеседования в первой понравившейся мне компании, вдруг пришло в голову осознание: "нужен код-ревью!". Предпосылкой к этому стало то, что я почти закончил проект и подумал начать его рефакторить. Именно это подтолкнуло меня решиться попробовать оформить мысли в блог, в котором кто-то найдёт для себя идеи, как не надо делать (а где-то, наоборот, как надо), а я смогу разложить по полочкам всё то, что крутится у меня самого в голове.

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

Пишем онлайн-тренажёр для Python, C++ и Go: опыт Практикума

Блог компании Яндекс Блог компании Яндекс Практикум Python *C++ *Go *

Один из вариантов мини-IDE в интерфейсе урока

Привет! Меня зовут Павел Свиридов, я руководитель группы разработки в Яндекс Практикуме. Сегодня я вместе со своим коллегой, разработчиком Владимиром Лукьяновым, хочу рассказать о том, как наша команда развивала онлайн-тренажёры в вебе — это такие маленькие среды разработки, встроенные в курсы Практикума. Основное внимание уделю тренажёрам Python и С++, а о других языках скажу пару слов в самом конце и покажу на примере, как создать тренажёр для языка Go.
Читать дальше →
Всего голосов 29: ↑27 и ↓2 +25
Просмотры 8.6K
Комментарии 4

Языка С/C++ не существует

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

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

Читать далее
Всего голосов 169: ↑138 и ↓31 +107
Просмотры 54K
Комментарии 382

IEC 61499 и решения с открытым исходным кодом для разработки систем управления

Информационная безопасность *C++ **nix *Умный дом DIY или Сделай сам
Из песочницы

Традиционно мир разработки для встраиваемых решений делится на программирование ПЛК, где используются среды стандарта IEC 61131 и разработку на С/С++ для микроконтроллеров и embedded Linux. Стандарт IEC 61499 является наследником стандарта IEC 61131 и предназначенн для разработки распределенных систем управления. Основным строительным элементов IEC 61499 является функциональный блок похожий на конструкцию языка FBD. Опенсорсные инструменты Eclipse 4diac IDE и Eclipse 4diac forte позволяют разработать распределенную систему управления из нескольких Raspberry PI или компьютеров с Linux, Windows или Freertos. Доступна работа с распространенными полевым шинами и возможность расширения библиотек блоков на С++.

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

Статический анализатор кода vs разработчики. Шо, опять?

Блог компании PVS-Studio C++ *

В середине мая этого года мы опубликовали обновлённую версию нашего квиза для C++ разработчиков. Спустя 2 месяца мы решили рассказать о результатах.


0964_rezultaty_quiza_cpp_ru/image1-3f082de585be7198d831d7e418a82578.png

Читать дальше →
Всего голосов 10: ↑7 и ↓3 +4
Просмотры 2.7K
Комментарии 15

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

Работа

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