Как стать автором
Обновить
-2
0.3
Алексей @IIopy4uk

программист C++/Qt

Отправить сообщение

std::execution принят в C++26 — пора знакомиться

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров16K

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

В конце июня стандартный комитет одобрил включение std::execution (P2300) в C++26. Это пропозал, который призван решить вышеуказанные проблемы. Давайте разбираться!

Читать далее
Всего голосов 27: ↑24 и ↓3+27
Комментарии28

Опасность устарела: несколько важных нюансов в новых стандартах C++

Время на прочтение16 мин
Количество просмотров16K
Undefined behavior (UB) — боль, знакомая каждому разработчику со стажем; эдакий «код Шредингера», когда не знаешь, правильно тот работает или нет. К счастью, стандарты языка С++20/23/26 привнесли относительно неопределенного поведения кое-что новое. И довольно важное, если вы — архитектор ПО, а «плюсы» — ключевой стек вашей компании (подробнее о том, как и почему мы в «Лаборатории Касперского» много используем С++, читайте здесь).

В этой статье я со своих позиций Senior Software Architect и Security Champion в микроядерной операционной системе KasperskyOS рассмотрю кейсы-ловушки, в которые можно попасть практически в любом из стандартов, и покажу, что меняется в С++20/23/26, — уменьшается ли количество кейсов с неопределенным поведением, и становится ли С++ безопаснее.


Читать дальше →
Всего голосов 58: ↑56 и ↓2+60
Комментарии76

Type Loopholes: решая нерешаемое. Рефлексия времени компиляции

Время на прочтение17 мин
Количество просмотров4.3K

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

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

Узнать, какие параметры принимает конструктор типа.

Узнать, с какими шаблонными параметрами вызывался метод/функция с ADL.

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

Читать далее
Всего голосов 14: ↑13 и ↓1+14
Комментарии3

Ненавижу, _____, C++ массивы

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров22K

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

Но почему?
Всего голосов 47: ↑45 и ↓2+58
Комментарии171

Как писать требования и документацию к проекту. Полный гайд с шаблоном документации и примерами заполнения

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров32K

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

Меня расстраивает несправедливость в мире IT: для новичков-разработчиков есть куча пошаговых инструкций, о там, как разработать API или мобильное приложение. Хочу немного уровнять баланс вселенной, поэтому я написал небольшой гайд для аналитиков для составления документации.

В прошлой статье я представил шаблон, а теперь заполнил его для фичи «Экспресс-доставка товара в маркетплейсе». Моя цель – показать, как можно вести документацию и как правильно заполнять этот шаблон.

Читать далее
Всего голосов 54: ↑51 и ↓3+53
Комментарии24

Как создать Мету, которая затянет играть сутками

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров20K

Пошагово, с чек-листом и примерами из игр. Для конкретики беру популярный в прошлом году жанр VS-Like, при этом знания из статьи применимы к играм любых жанров.

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

Читать далее
Всего голосов 25: ↑16 и ↓9+9
Комментарии12

Объявление и инициализация переменных в C++

Уровень сложностиСредний
Время на прочтение41 мин
Количество просмотров24K


Продолжаем серию «C++, копаем вглубь». Цель этой серии — рассказать максимально подробно о разных особенностях языка, возможно довольно специальных. Это шестая статья из серии, список предыдущих статей приведен в конце в разделе 7. Серия ориентирована на программистов, имеющих определенный опыт работы на C++. Данная статья посвящена объявлению и инициализации переменных.


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


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

Читать дальше →
Всего голосов 27: ↑26 и ↓1+31
Комментарии48

Проверка работодателя: как минимизировать риски при трудоустройстве

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров20K

Вы IT-специалист и решили сменить место работы. Что обычно делают в таких случаях айтишники? Ходят по собеседованиям, работают над ошибками в случае отказов — и всё по новой до тех пор, пока не будет получен подходящий оффер. Многие ли из айтишников оценивают надёжность будущего работодателя во время поисков? При планировании профсоюзных кампаний мы проводим исследование работодателей с использованием множества источников и методик. Эта статья была написана с целью помочь специалистам любого уровня, от интернов до архитекторов, ведь никто не застрахован от проблем на работе. Мы поделимся опытом и надеемся, что он поможет вам не нарваться на недобросовестного работодателя.

Читать далее
Всего голосов 55: ↑54 и ↓1+65
Комментарии10

Обзор книги «С++ 20 в деталях»: доступно, но не для джунов

Время на прочтение8 мин
Количество просмотров21K

Привет, Хабр! Меня зовут Дмитрий Луцив, я работаю в СПбГУ на кафедре системного программирования, веду ряд IT-дисциплин на математико-механическом факультете в лабаратории компании YADRO и помогаю вузам актуализировать образовательные программы под задачи индустрии.

Я давно не программировал на С++, но стараюсь не отставать от изменений, происходящих в языке. Книга «C++ 20 в деталях» заинтересовала меня личностью автора (на секунду, это Райнер Гримм) и возможностью познакомиться с новым источником знаний о «плюсах». Решил ее прочитать, чтобы понять, кому материал будет полезен и могу ли я его рекомендовать. Под катом расскажу, что в книге хорошего, а что можно было бы сделать лучше, а также дам список дополнительных источников для специалистов разного уровня.

Читать далее
Всего голосов 27: ↑27 и ↓0+27
Комментарии14

Шпаргалка по модели памяти С++11

Время на прочтение9 мин
Количество просмотров17K

Модель памяти представляет из себя спецификацию допустимого поведения многопоточных программ, работающих с разделяемой памятью (shared memory) [1]. Наиболее примитивной моделью является последовательная согласованность (sequential consistency), где все инструкции из всех потоков образуют общий порядок (или, по крайней мере, его видимость), согласованный с порядком выполнения программы в каждом потоке [2].

Одной из наиболее важных фич C++11 является модель памяти, поддерживающая параллелизм, которая позволяет писать многопоточные программы, не полагаясь на различные расширения для конкретных целевых платформ.

Читать далее
Всего голосов 19: ↑16 и ↓3+17
Комментарии0

Создаем нативное Kotlin приложение на Spring Boot Native, Gradle и GraalVM без докера под MacOS и Windows

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров5.3K

В этой статье я хочу рассказать о практическом опыте нативной компиляции production приложения, написанного на Kotlin со Spring Boot, Gradle с использованием GraalVM . Начну сразу с минусов и плюсов самой возможности нативной компиляции и где она может быть полезна, и дальше перейду уже непосредственно к процессу сборки под MacOS и Windows.

В конце статьи я более подробно расскажу о проекте и почему возникла такая необходимость, учитывая довольно много ограничений и подводных камней поддержки нативной компиляции как со стороны Spring Boot, та и со стороны GraalVM.

Read more →
Всего голосов 12: ↑12 и ↓0+12
Комментарии13

Чек-лист геймджема: как подготовиться, пройти и не умереть

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров2.8K

Для многих гейм-дизайнеров и разработчиков игр гейм-джемы являются неотъемлемой частью жизни. Совсем недавно закончился GMTK Game Jame 2023, а совсем скоро нас ждут другие джемы. Честно говоря, они проходят каждый день, достаточно зайти на itch.io в раздел "Джемы" и посмотреть расписание.

Сегодня поговорим о том, как подготовиться, пройти джем и не умереть. Как всегда с использованием чек-листов.

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

Рассказываем!

Читать далее
Всего голосов 5: ↑3 и ↓2+3
Комментарии1

Библиотека Левел Дизайнера

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров2.2K

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

Про подборку

Подборка включает в себя несколько разделов, в том числе: книги, статьи, источники статей, видео, каналы, инструменты и портфолио известных специалистов. Сама библиотека находится по ссылке.

Читать далее
Всего голосов 2: ↑1 и ↓1+2
Комментарии0

Анализ данных по метеорологическим станциям с помощью Pandas

Уровень сложностиСредний
Время на прочтение19 мин
Количество просмотров9.2K

В статье будет рассмотрено решение задачи анализа открытых метеорологических данных сервиса meteo.ru Федеральной службы по гидрометеорологии и мониторингу окружающей среды. Анализ будет произведен в Jupyter Notebook при помощи Python библиотеки Pandas, а также будут сделаны выводы относительно того какие изменения произошли в климате за последние 50 лет в нашей стране. Вы узнаете еще одну страшную правду о глобальном потеплении…

Узнать правду
Всего голосов 11: ↑10 и ↓1+11
Комментарии14

Подводные камни С++. Решаем загадки неопределённого поведения, ч. 1

Время на прочтение11 мин
Количество просмотров16K

Изучение и понимание неопределённого поведения — важный шаг для разработчика C++, поскольку undefined behavior бывает источником серьёзных ошибок и проблем в программах. UB может проявляться в разных аспектах языка, включая операции с памятью, многопоточность, арифметические вычисления, работу с указателями и так далее.

Под катом мы погрузимся в мир неопределённого поведения в C++ и рассмотрим некоторые примеры ситуаций, в которых оно может возникать.

P.S.: Часть приведённых в статье примеров вдохновлены материалами, которые можно посмотреть в разделе «Полезные ссылки».

Читать далее
Всего голосов 42: ↑40 и ↓2+44
Комментарии44

Графические эффекты в четырех стихиях

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров3.6K

Это вторая статья про 2Д рендеринг разнообразных эффектов в нашей игре. Предыдущую статью можно прочитать здесь. Напомню, что игра двухмерная и разрабатывается на движке Game Maker Studio 2.

Сегодня рассмотрим четыре стихии — воду, огонь, землю и воздух. Какие графические эффекты они скрывают в себе? Давайте узнаем.

Внутри много гифок и картинок
Всего голосов 35: ↑35 и ↓0+35
Комментарии0

Мечтали про интерактивные книги, когда читали фантастику? Я знаю человека, который делает их прямо сейчас

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров12K
Когда я был юн, то завороженно читал об интерактивных книгах. Нет, не тех, что упомянуты в Гарри Поттере, а о настоящих — описанных десятками фантастов. Таких, где иллюстрации можно покрутить, запустить в динамике, поставить на паузу и рассматривать в разных сочетания. Я думаю, вы понимаете о чем я говорю.

Каково же было мое удивление, когда в прошлом году я наткнулся именно на такие пусть и не книги, но довольно подробные статьи. Делает их калифорнийский iOS-разработчик польского происхождения Бартош Цехановский (Bartosz Ciechanowski). И каждая его статья — штучный товар.


Читать дальше →
Всего голосов 45: ↑45 и ↓0+45
Комментарии24

Интерактивные книги 2: на этот раз про геймдизайн и алгоритмы

Уровень сложностиСредний
Время на прочтение2 мин
Количество просмотров10K
Хабр силен комментариями. Поэтому, когда я писал топик "Мечтали про интерактивные книги? Я знаю человека, который делает их прямо сейчас", то надеялся, что читатели помогут найти аналогичные примеры. Результат превзошел ожидания.


Итак, знакомьтесь — Амит Патель (Amit Patel) и его интерактивные статьи на стыке математики, алгоритмов и программирования. Небольшой дисклаймер: поскольку я не могу встроить интерактивные иллюстрации на Хабр, то буду использовать анимированные gif. Некоторые из них могут быть тяжелые.
Читать дальше →
Всего голосов 45: ↑45 и ↓0+45
Комментарии19

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

Время на прочтение12 мин
Количество просмотров13K

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

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

Восемь неочевидных вещей в шаблонах С++

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров12K

Привет, я backend-разработчик IT-компании SimbirSoft Леонид. В этой статье расскажу про 8 нюансов, которые я обнаружил при изучении шаблонов С++. Честно признаюсь, что наткнувшись на некоторые из них, я был удивлен: «Хм, SFINAE есть, а слова нет?» или «А что, есть разница между шаблоном в шаблоне и шаблоном с двумя параметрами?».

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

Некоторые из примеров были описаны в cpp-referernce чуть ли не в самом первом абзаце, некоторые потребовали пошерстить stackoverflow, и в конце концов все есть в стандарте. Но кто учит язык по документации? У кого из нас не было такой ситуации: «Сейчас я код потыкаю, а там разберемся, что к чему». Так вот, сейчас пришло время узнать, как это работает и почему именно так. 

Читать далее
Всего голосов 22: ↑18 и ↓4+19
Комментарии5

Информация

В рейтинге
2 204-й
Откуда
Екатеринбург, Свердловская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Software Developer, Fullstack Developer
Middle
От 150 500 ₽
C++
Qt
Object-oriented design
Linux
Git
PostgreSQL