Ваша корзина пуста.
Всем привет, хочу рассказать о своей утилите dcw (Docker Compose Workspace) для удобного управления тестовыми окружениями на базе docker-compose.
Читать далееПроверка небольших чисел на простоту - популярная подзадача в спортивном программировании. И тест Миллера-Рабина, пожалуй, наиболее популярный из простых алгоритмов для этого.
У меня давно было желание с ним поиграться, стараясь оптимизировать различными способами. Например, векторизовать и посмотреть, станет ли быстрее.
Читать далееВсем привет! На связи команда Практикума. Недавно мы проводили открытое алгоритмическое собеседование и теперь хотим поделиться записью. Это отличная возможность подсмотреть, каким может быть процесс, научиться на чужих ошибках или взять на примету удачные решения.
Мы попросили Самсонова Ивана рассказать о его критериях оценки кандидатов, а также поделиться советами по подготовке. На видео Иван выступал в роли тимлида, а в обычной жизни он разработчик со степенью в Computer Science и наставник курса «Алгоритмы и структуры данных».
Смотреть и читатьМне понравилась идея Flipper Zero в хранении и эмуляции электронных ключей. Это довольно удобно, можно избавится от половины моей связки со всеми ключами, плюс те ключи, которые я обычно даже не ношу, будут под рукой, в том числе универсальные. Но не понравились его габариты. К тому же, весь остальной функционал хоть мне и интересен, для этой задачи излишен, а за него тоже надо платить. В этот момент появилась идея и, что самое главное, желание самостоятельно реализовать такую штуку.
Конечная идея была в эмуляции ключей стандартов TouchMemory, Em-Marine и Mifare classic в одном устройстве. Хочется, чтобы это устройство было максимально компактным, в идеале вообще помещалось на связку ключей.
Читать далееВсем привет. В этой статье я расскажу про дерево отрезков. Очень мощной структуры данных, которая позволяет делать много разных операций над массивом чисел. Я постараюсь по полочкам разложить эту тему и объяснить возможности дерева отрезков. Также я разберу несколько нетривиальных задач на дерево отрезков. Помимо самого дерева отрезков я расскажу и про связанные темы: дерево Фенвика и разреженные таблицы.
Читать далееКоманда разработчиков получила от руководства задание срочно написать приложение для обработки пользовательских данных. Руководитель быстро декомпозировал задачу на две и поручил одной команде сделать модуль подготовки данных, а другой - реализовать сами расчеты.
// Все персонажи и события вымышлены, любые совпадения случайны.
Читать далее
Статические анализаторы помогают не только обнаруживать ошибки и дефекты безопасности, но и делать код чище. Выявляя лишние проверки, дублирующие действия и другие аномалии, можно сделать код проще, красивее и легче для чтения. Разберём это на практическом примере рефакторинга функции.
Привет. Предположим, вы захотели начать изучать языĸ программирования C++ или, возможно, тех материалов, что уже изучили, вам недостаточно.
Я — Савва, программирую уже больше 7 лет, работаю менеджером команды наставников в Практикуме на курсе «Разработчик С++», а с недавнего времени — разработчиком в Positive Technologies. В этой статье мы с вместе с Практикумом собрали леĸции, ĸниги, курсы и всяĸое таĸое, чтобы шансов выстрелить себе в ногу самостоятельно было меньше :) По C++ существуют и другие подборĸи, но, ĸ удивлению, на Хабре их всего две.
Читать далееВ марте мы собирались на митапе по С++ в Санкт-Петербурге. Для всех, кто не смог присоединиться к встрече, подготовили записи докладов и дискуссии с экспертами из YADRO, VK и Kaspersky, а также создателем Sphinx Андреем Аксёновым. Почему стоит сохранить подборку в закладки:
• Руководитель отдела компиляторов научит рассчитывать цену абстракции для функций и других сущностей с учетом ваших ресурсов и возможностей компилятора.
• Эксперт из PVS-Studio покажет, почему линтеры не всегда подходят для поиска ошибок и какое решение использовать вместо них, чтобы не навредить безопасности сервиса.
• Инженеры с многолетним опытом работы на С++ поделятся опытом проведения код-ревью — возможно, вы найдете в их практиках что-то полезное или просто посмеетесь вместе с участниками дискуссии.
Читать далееAMX (Advanced Matrix Extension) - это модуль аппаратного ускорения умножения матриц, который появился в серверных процессорах Intel Xeon Scalable, начиная с 4 поколения (архитектура Sapphire Rapids).
В начале этого года ко мне в руки наконец попал сервер, с данным типом процессора.
Конкретно модель Xeon(R) Gold 5412U - это 24 ядерный процессор с тактовой частотой в 2.1 GHz. При этом 8 приоритетных ядер могут разгонятся до 2.3 GHz, а 1 ядро до 3.9 GHz в Turbo Boost). Кроме того данный процессор поддерживает 8 канальную DDR-5 4400 MT/s.
Мне как человеку, достаточно долгое время посвятившему оптимизации алгоритмов компьютерного зрения и запуска нейронный сетей на CPU (библиотеки Simd и Synet), было интересно: на сколько AMX позволяет реально ускорить вычисления и как извлечь из него максимальную производительность.
Далее я постараюсь максимально подробно ответить на данные вопросы. Прежде все я буду касаться вопросов однопоточной производительности (многопоточную рассмотрю позже).
Далее много кода на С++...В этом месяце много релизов, хороших и разных. Так, на днях компания Qt Company опубликовала релиз фреймворка Qt 6.7. Разработчики придерживаются прежней стратегии как по стабилизации работы, так и по увеличению функций ветки Qt 6. Поддерживается много платформ, включая Windows 10+, macOS 12+, Linux (Ubuntu 22.04, openSUSE 15.5, SUSE 15 SP5, RHEL 8.8/9.2, Debian 11.6), iOS 16+, Android 8+ (API 23+), webOS, WebAssembly, INTEGRITY, VxWorks, FreeRTOS и QNX. Подробности — под катом.
Читать далееКак часто вам приходится сталкиваться с конструкцией sizeof(array)/sizeof(array[0]) для определения размера массива? Очень надеюсь, что не часто, ведь на дворе уже 2024 год. В заметке поговорим о недостатках конструкции, откуда она берётся в современном коде и как от неё наконец избавиться.
Читать далееПривет, habr! Предлагаю вашему вниманию статью о том, как я писал велосипед библиотеку для передачи сообщений между потоками с возможностью мультиплексирования.
Смотреть мой велосипедПриветствую хабравчане!
В данной статье хочу поделиться проблемами в ИТ. Высказать об этом своё мнение. Обсудить в комментариях, всё ли так плохо на самом деле и каков выход из данной ситуации. Меня не покидает ощущение, что мы как программисты, что то потеряли при очередном витке ИТ прогресса. Обсудим?
Давай, чё там у тебяВ этой статье рассказывается, как настроить ваши проекты SFML С++ со статической компоновкой используя интегрированную среду разработки программного обеспечения Visual Studio.
Установка SFML библиотеки
Загрузите библиотеку SFML c официального сайта. Выбираем самую последнюю версию софта, на сегодня это версия SFML 2.6.1.
Читать далееЭта статья фокусируется на примере использование библиотеки DCMTK при создании DICOM-файлов. Как говорит Википедия, DICOM - Digital Imaging and Communications in Medicine, это стандарт создания, хранения, передачи и визуализации медицинских изображений. Стандарт включает в себя часть, которая описывает структуру DICOM-файла, и другую, описывающую передачу DICOM-данных по сети.
DCMTK обеспечивает строгую совместимость с DICOM-стандартом, предоставляя широкий спектр функциональности для обработки изображений, текстовой информации и метаданных. Библиотека поддерживает различные форматы изображений, унифицирует данные и обеспечивает эффективный обмен информацией в медицинском сообществе.
Современные МРТ и КТ устройства по умолчанию создают медицинские изображения и передают их на PACS-сервер для хранения, используя стандарт DICOM. Но цифровые медицинские изображения не обязательно должны быть топографическими, а могут быть обычными цветными или черно-белыми фотографиями, например, снимок сетчатки глаза. Такие снимки зачастую хранятся в виде: описание пациента + jpg снимок. Чтобы хранить такие изображения на PACS-серверах, их нужно преобразовать в DICOM.
В данной статье мы углубимся в практическую сторону вопроса, рассмотрев конкретный пример создания файла DICOM из изображения формата *.dcm на языке C++ для последующей его отправки на PACS-сервер.
Читать далееПривет, Хабр!
CRTP — это метод в C++, при котором класс наследуется от шаблона класса, используя себя в качестве параметра шаблона. Это выглядит примерно так: класс X наследуется от класса-шаблона Y<X>. Этот паттерн позволяет базовому классу напрямую обращаться к методам производного класса. С помощью CRTP можно можно обогатить интерфейс производного класса, внеся в него дополнительные методы через базовый класс-шаблон.
С CRTP также можно достигнуть полиморфизма во время компиляции и таким образом избваиться от затрат на производительность, связанных с динамическим полиморфизмом и виртуальными функциями.
Читать далееПривет, Хабр! Меня зовут Николай, я разработчик С++ в SimbirSoft. В этой статье я хочу поделиться своим опытом применения алгоритмов.
Каждый из нас знает, что существуют алгоритмы стандартной библиотеки, и что они делают. Но не все и не всегда используют их. Я тоже их не использовал до той поры, пока не узнал, когда их применять.
Все примеры взяты из реального проекта. Чтобы не загромождать примеры, код этих функций был упрощён для лучшего восприятия.
Прежде чем перейти к примерам, необходимо отметить основное преимущество алгоритмов: они позволяют упростить код и повысить читаемость (или самодокументирование, которое позволяет на основании названия алгоритма понять, что делается), обобщить код. Начиная с C++17, алгоритмы могут выполняться параллельно, реализация алгоритма может быть жестко с оптимизирована компилятором по сравнением с обычным кодом.
Читать далееПолный список здесь