Pull to refresh

Вышла версия 6.0 фреймворка Qt

Reading time 2 min
Views 18K
Programming *


Во вторник, 8 декабря, компания Qt Company обновила свой фреймворк для кроссплатформенной разработки. Если сравнить с пятой версией 2012 года, в Qt 6.0 появились новые API для 3D-графики, улучшенная поддержка С++17 и система сборки cmake. Полный список изменений компания публикует на странице в вики.
Читать дальше →
Total votes 16: ↑15 and ↓1 +14
Comments 11

Программисты создали проект «Этот код не существует»

Reading time 1 min
Views 12K
Open source *Programming *C++ *C *Machine learning *


23 февраля 2021 года разработчики из MESS Lab (университет Нью-Йорка) открыли в общий доступ проект «Этот код не существует» (this code does not exist). На сайте doesnotexist.codes выводится листинг части кода на C/C++. Пользователю предлагается угадать — это настоящий код или его фрагменты были получены в результате работы нейросети GPT-2, обученной на 774 млн строк кода из 10 тыс. самых популярных пакетов Debian. Настоящие фрагменты кода также были взяты из того же набора пакетов.
Читать дальше →
Total votes 24: ↑23 and ↓1 +22
Comments 20

VK приглашает студентов в программу Tarantool для работы над исследовательскими задачами

Reading time 1 min
Views 1.7K
VK corporate blog Programming *C++ *Studying in IT IT career

Друзья, мы начали набирать участников в студенческую программу Tarantool. Вы узнаете о методиках разработки ПО и получите опыт работы в технологическом проекте. Решение задач в рамках программы оплачивается.

Программа Tarantool целиком состоит из практики разработки. Участвовать могут студенты со всей страны: программа проходит удалённо. Начало 1 июля. В первую неделю менторы из сотрудников Tarantool познакомят участников с проектом и технологиями, и вы сможете выбрать задачи, с которыми будете работать — средней или повышенной сложности.

Читать далее
Total votes 6: ↑5 and ↓1 +4
Comments 3

В рейтинге языков программирования от TIOBE Software за январь 2023 года С++ обошёл Java

Reading time 1 min
Views 20K
Programming *Statistics in IT IT-companies


В рейтинге языков программирования от TIOBE Software за январь 2023 года С++ обошёл Java и поднялся на третье место.
Читать дальше →
Total votes 7: ↑6 and ↓1 +5
Comments 9

Бьёрн Страуструп ответил АНБ США по поводу рекомендации ведомства отказаться от использования языков C и C++

Reading time 3 min
Views 61K
Information Security *Programming *C++ *C *IT-companies


Изобретатель языка программирования C++ Бьёрн Страуструп ответил Агентству национальной безопасности (АНБ) США по поводу рекомендации ведомства отказаться от использования языков C и C++, перекладывающих управление памятью на разработчика, в пользу современных языков программирования (C#, Go, Java, Ruby, Rust и Swift), которые обеспечивают автоматическое управление памятью или выполняющие проверки безопасной работы с памятью во время компиляции кода.
Читать дальше →
Total votes 74: ↑71 and ↓3 +68
Comments 349

Один символ ценой в уязвимость

Reading time 1 min
Views 1.6K
C++ *
Возможно, многие в курсе про недавнюю узявимость в ActiveX компоненте MSVidCtl, которая потенциально могла позволить злоумышленнику выполнить произвольный код используя переполнение буфера. Недавно, в блоге посвященному практике SDL появилось описание ошибки программиста, которая привела к уязвимости защиты.

Ошибка заключается в одном символе, вместо правильного кода:
hr = pStream->Read((void*)pbArray, (ULONG)cbSize, NULL);
* This source code was highlighted with Source Code Highlighter.

программист написал
hr = pStream->Read((void*)&pbArray, (ULONG)cbSize, NULL);
* This source code was highlighted with Source Code Highlighter.

использование лишнего символа & (получение адреса) привело к тому, что злоумышленник получил возможность произвести удаленное переполнение буфера с известными последствиями.

Подробнее про эту ошибку, почему ее пропустили и что будет сделано, чтобы подобные ошибки больше не появлялись, можно почитать в блоге там же есть описание и другой ошибки связанной с ATL.
Total votes 60: ↑51 and ↓9 +42
Comments 60

О модульном тестировании на C++ и о CxxTest

Reading time 4 min
Views 58K
IT systems testing *
Совсем недавно в ходе разработки одного проекта передо мной встала задача поиска удобного средства для написания юнит-тестов на C++. К каким результатам привело моё исследование подробнее в этой статье.
Поехали.
Total votes 20: ↑19 and ↓1 +18
Comments 29

Многопоточность, общие данные и мьютексы

Reading time 5 min
Views 57K
C++ *

Введение


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

Для блокировки общих данных от одновременного доступа необходимо использовать объекты синхронизации.

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

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

Ниже рассматривается работа с мютексами в Windows и Unix, подобная идея может быть использована при работе с другими объектами синхронизации.

Эта идея является частным случаем методики «Выделение ресурса — есть инициализация (RAII)».

Далее
Total votes 50: ↑38 and ↓12 +26
Comments 50

STL Filter — скрипт для лаконичных ошибок STL

Reading time 3 min
Views 1.6K
C++ *
STL славится своей способностью заполнять метры экранного пространства сообщениями об ошибках. Надоело смотреть на экран и видеть перлы вроде:

testmap.cpp:25: error: no matching function for call to ‘std::map<int, double, std::less, std::allocator<std::pair<const int, double> > >::map(int, int, int)’
/usr/include/c++/4.3/bits/stl_map.h:175: note: candidates are: std::map<_Key, _Tp, _Compare, _Alloc>::map(const std::map<_Key, _Tp, _Compare, _Alloc>&) [with _Key = int, _Tp = double, _Compare = std::less, _Alloc = std::allocator<std::pair<const int, double> >]
/usr/include/c++/4.3/bits/stl_map.h:165: note: std::map<_Key, _Tp, _Compare, _Alloc>::map(const _Compare&, const _Alloc&) [with _Key = int, _Tp = double, _Compare = std::less, _Alloc = std::allocator<std::pair<const int, double> >]


ну и еще пара десятков строк.

Читать дальше →
Total votes 40: ↑32 and ↓8 +24
Comments 35

Разработчик С++ Бьёрн Страуструп

Reading time 2 min
Views 11K
Biography of geeks
Бьёрн Страуструп — родился 11 июня 1950 в датском городе Орхус.
После окончания школы поступил в Университет Ааргус на отделение компьютерных технологий. В 1975 году окончил его и получил степень магистра.
В дальнейшем продолжил свое образование в Кембриджском университете Англии.
В Кембридже, в Вычислительной лаборатории, он занимался проектированием распределенных систем, и в 1979 году ему была присуждена степень доктора философии.
В этом же году Страуструп вместе с семьей переехал в Нью-Джерси (США), где стал работать в Центре компьютерных исследований фирмы Bell Labs. Когда он занимался исследованиями в фирме, Бьёрну Страуструпу потребовалось написать несколько имитационных программ. SIMULA-67 — первый объектно-ориентированный язык для моделирования мог бы быть идеальным для подобных задач, если бы не его сравнительно низкая скорость выполнения программ.
В Нью-Джерси у него рождаестя сын и он начинает больше времени уделять семье.
SIMULA-67 и BCPL(Basic Combined Programming Language) не устраивал Бьёрна и он начинает свою работу над «Си» дополнив его классами.
Первоначально название так и было «Си с классами» (С with classes)
Читать дальше →
Total votes 48: ↑37 and ↓11 +26
Comments 34

Моя планета Земля

Reading time 13 min
Views 3K
Lumber room


Привет всем кто это читает! Хочу рассказать, как с помощью библиотеки OpenGL нарисовать вот такой земной шар.
Здесь я не буду останавливаться на создании окна и контекста устройства отображения, т.к. с это выходит за рамки данного повествования.
Читать дальше →
Total votes 62: ↑55 and ↓7 +48
Comments 21

Основы создания игрового движка: таймер

Reading time 6 min
Views 8.2K
C++ *
Публикуется по просьбе моего знакомого, если вам понравится статья, можете выслать ему инвайт.
Мыло скажу в ПМ или могу написать здесь же. :)


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

Цель: написать точный таймер для использования в игровом движке (а это значит, что помимо отмерения отрезков времени нам необходимо обеспечить работу событий, возникающих через заданное время).
Читать дальше →
Total votes 43: ↑22 and ↓21 +1
Comments 39

Вход в систему по подключению определенной флешки

Reading time 9 min
Views 38K
Development for Windows *
Одним ужасным пятничным вечером мне стало интересно как реализован вход в систему(Windows 7) по отпечатку пальца, так часто использующийся на ноутбуках. Что меня большего всего интересовало – как сделана такая прозрачная интеграция с WinLogon(механизм входа в систему).

С помощью знакомого я узнал что сие называется Credential Provider(по крайней мере начиная с Vista, до неё – был другой механизм). И тут-то я вспомнил что давно хотел сделать чтобы система разблокировалась при подключении одной определенной флешки. Поэтому я захотел быстренько наваять такой проект.
читать дальше
Total votes 147: ↑135 and ↓12 +123
Comments 63

DSL для boost::MPL, превращаем f(x) в f<x>::type

Reading time 2 min
Views 3.3K
C++ *
Краткое содержание статьи (для тех кто знаком с boost::mpl), typename опущены для ясности:
a = b;				==>		typedef b a;
f(x)				==>		f<x>::type
f(x) { return x*; }		==>		template<typename x> struct x { typedef x* type; };
f()(x)				==>		f::apply<x>::type
a[x]				==>		mpl::at<a, x>::type
(x ? y : z)			==>		mpl::if_<x, y, z>::type
switch (if_<x, y, z>)		==>		*Уфф*, общая (default) и частичные специализации
{
	case if_<bool_<false>, y, z>: return y;
	default: return z;
}

Под хабракатом есть немного пояснений :)
Читать дальше →
Total votes 27: ↑22 and ↓5 +17
Comments 14

CEE-SECR 2010 ищет таланты

Reading time 1 min
Views 970
Softkey.ru corporate blog
Друзья!

Спешим сообщить, что сроки приема заявок на выступления с докладами на конференцию CEE-SECR 2010 («Разработка ПО 2010») продлили до 9 августа 2010 г.

image

Хотите поделиться своими знаниями и опытом? Тогда заполняйте специальную форму на сайте CEE-SECR 2010.
Читать дальше →
Total votes 9: ↑7 and ↓2 +5
Comments 2

Проблема глобального переопределения new/delete в C++/CLI

Reading time 4 min
Views 6.1K
C++ *
Как известно, C++ позволяет глобально переопределять операторы new и delete. Обычно такое переопределение используется для диагностики, поиска утечек памяти и более эффективного распределения памяти.

Все это мы используем в нашем крупном проекте. Однако у нас есть часть, написанная на C#, которая с помощью C++/CLI взаимодействует с основной частью на C++. И вот тут появились проблемы. У нас получались утечки памяти там, где их быть ну никак не могло.
Читать дальше →
Total votes 39: ↑33 and ↓6 +27
Comments 20

Кодировки

Reading time 6 min
Views 59K
C++ *

Всем рано или поздно приходится работать с различными кодировками. Заметив в коде своей команды различные, порой странные, подходы к решению этих проблем, пришлось провести разъяснительную беседу. Ниже поделюсь своим видением правильной работы с не-ASCII символами в коде. Буду рад конструктивной критике.

Читать дальше
Total votes 76: ↑73 and ↓3 +70
Comments 61

Как безопасно разрушить объект. И другие мысли

Reading time 5 min
Views 12K
C++ *
Недавно разглядывал вакансии одной известной конторы, задумывался над вопросам (которые, кстати, на всех их вакансиях одинаковые). И решил написать заметку по самому интересному (на мой взгляд) аспекту первого же вопроса. Может быть доберусь и до других, а пока предлагаю задуматься, надо ли делать деструкторы виртуальными?

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

Каким же должен быть полный ответ на вопрос про деструкторы?
Читать дальше →
Total votes 67: ↑52 and ↓15 +37
Comments 51

О ненависти к С++

Reading time 12 min
Views 61K
C++ *
Translation
С++ or not C++, C++ или Java/Python/Ruby? Как часто вы задаёте или слышите подобные вопросы? Не хотелось бы поднимать очередной холивар — по моему мнению, умные люди давно должны были бы прийти к выводу, что при выборе языка нет той серебряной пули, которая бы поставила окончательную точку, — у каждого языка есть свои плюсы и минусы и чаще всего проблемы в прокладке между клавиатурой и стулом.

Читать дальше →
Total votes 112: ↑87 and ↓25 +62
Comments 180