en
Feedback
Senior C++ Developer

Senior C++ Developer

Open in Telegram

📈 Analytical overview of Telegram channel Senior C++ Developer

Channel Senior C++ Developer (@seniorcpp) in the Russian language segment is an active participant. Currently, the community unites 11 654 subscribers, ranking 10 341 in the Technologies & Applications category and 55 055 in the Russia region.

📊 Audience metrics and dynamics

Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 11 654 subscribers.

According to the latest data from 29 August, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -68 over the last 30 days and by -4 over the last 24 hours, overall reach remains high.

  • Verification status: Not verified
  • Engagement rate (ER): The average audience engagement rate is 10.67%. Within the first 24 hours after publication, content typically collects 4.59% reactions from the total number of subscribers.
  • Post reach: On average, each post receives 1 243 views. Within the first day, a publication typically gains 535 views.
  • Reactions and interaction: The audience actively supports content: the average number of reactions per post is 0.
  • Thematic interests: Content is focused on key topics such as c++, контейнер, диапазон, git, true.

📝 Description and content policy

The author describes the resource as a platform for expressing subjective opinions:
Изучаем C++. По вопросам сотрудничества: @adv_and_pr РКН: https://www.gosuslugi.ru/snet/676e9a1e4e740947beca35ba

Thanks to the high frequency of updates (latest data received on 30 August, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.

11 654
Subscribers
-424 hours
-167 days
-6830 days
Posts Archive
Узнаем размер файла с помощью C++ В этом примере мы открываем файл example.txt с помощью ifstream, перемещаем указатель на ко
Узнаем размер файла с помощью C++ В этом примере мы открываем файл example.txt с помощью ifstream, перемещаем указатель на конец файла с помощью функции seekg, а затем получаем текущую позицию (размер файла) с помощью функции tellg. Результат выводится на экран.

Промпт-инженеринг — новый хайп или перспективная профессия? Рассказываем про направление с большим потенциалом и маленькой ко
Промпт-инженеринг — новый хайп или перспективная профессия? Рассказываем про направление с большим потенциалом и маленькой конкуренцией на рынке на нашей бесплатной лекции. По итогам эфира вы узнаете: — Кто такой промт-инженер и чем он занимается; — Как интегрировать скиллы промт-инжинеринга в работу, если вы работаете в IT; — Кому в действительности нужны его услуги и какие результаты это даст; — Сколько платят промт-инженеру в России и мире; — Кто может стать промт-инженером и какой порог входа; Кликай на ссылку и забирай подробную информацию вместе с классными бонусами. erid: LjN8KaG2R ООО Зерокодер, ИНН 9715401631

Интервью на C ++ с инженером Google: Closest Coin (с русскими субтитрами) Смотреть видео

Офер в Яндекс для опытных бэкендеров за два дня 24–25 августа приглашаем бэкендеров с опытом работы от пяти лет получить офер
Офер в Яндекс для опытных бэкендеров за два дня 24–25 августа приглашаем бэкендеров с опытом работы от пяти лет получить офер в Яндекс через multitrack за 2 дня. Достаточно решить задачи онлайн до 20 августа и пройти несколько технических секции 24 августа, чтобы уже 25-го получить офер и выбрать три команды, к которым вам было бы интересно присоединиться. Как правило, за несколько собеседований сложно понять, подходит ли вам команда и наоборот. Multitrack позволит вам поработать в трёх разных командах Яндекса и выбрать подходящую. Вы сможете погрузиться в рабочие процессы, познакомиться с будущими коллегами и понять, с какими задачами и технологиями хотите работать. Узнать подробности и зарегистрироваться.

Алгоритм random_shuffle Он случайным образом переставляет элементы в диапазоне [первый, последний). Алгоритм меняет значение
Алгоритм random_shuffle Он случайным образом переставляет элементы в диапазоне [первый, последний). Алгоритм меняет значение каждого элемента на какой-либо другой случайно выбранный элемент. Про различия между shuffle и random_shuffle можно почитать здесь.

seniorcpp 25.07 Открытый урок. Аллокаторы в C++: Что делать, если менеджер памяти вас разочаровывает? 🤔 C++ известен тем, чт
seniorcpp 25.07 Открытый урок. Аллокаторы в C++: Что делать, если менеджер памяти вас разочаровывает? 🤔 C++ известен тем, что позволяет работать с памятью напрямую. Здесь вы точно знаете, где и как расположен каждый из ваших объектов, сколько памяти он занимает. Но можете ли вы принимать решение, где и как будет размещен ваш объект? Часто стандартные методы выделения памяти не удовлетворяют узким требованиям конкретной логики. ⚡️Присоединяйтесь к открытому вебинару 8 августа в 20:00 мск! Поговорим, зачем в C++ существуют аллокаторы. ✅Обсудим, что C++ приобрел при введении полиморфных аллокаторов. И рассмотрим конкретный пример увеличения производительности программы с их помощью. ➡️ Зарегистрируйтесь сейчас, чтобы не пропустить бесплатный урок: https://vk.cc/cyEjkw Встречаемся в преддверии старта курса C++ Developer. Professional. До 31.07 на курс действует скидка 10%. 🔥

Функция div() Функция div() вычисляет величину numerator/denominator и возвращает частное и остаток в структуре div_t, котора
Функция div() Функция div() вычисляет величину numerator/denominator и возвращает частное и остаток в структуре div_t, которая содержит два целочисленных поля (в неопределённом порядке) quot и rem. Частное округляется до ближайшего нуля. Результат равняется quot*denominator+rem = numerator. Функции ldiv(), lldiv() и imaxdiv() выполняют эту же функцию, деля числа соответствующего типа и возвращая результат в структуре с соответствующим именем, всегда с полями quot и rem того же типа, что и аргументы функции. #для_начинающих

Функция ptsname() Функция ptsname() возвращает имя подчиненного псевдотерминального устройства, соответствующего главному уст
Функция ptsname() Функция ptsname() возвращает имя подчиненного псевдотерминального устройства, соответствующего главному устройству, на которое ссылается файловый дескриптор fd. Функция ptsname_r() является реентерабельным эквивалентном ptsname(). Она сохраняет имя устройства подчинённого псевдо-терминала в виде строки (завершающейся null) в буфер, указанный в buf. В аргументе buflen задаётся количество байт, доступных в buf. #для_начинающих

Библиотека Библиотека используется для работы с псевдотерминалами (PTY — Pseudo Terminal). Псевдотерминалы предоставляют сред
Библиотека <pty.h> Библиотека <pty.h> используется для работы с псевдотерминалами (PTY — Pseudo Terminal). Псевдотерминалы предоставляют средство для создания пары устройств, одно из которых может использоваться как мастер (master), а другое как рабочее (slave). Процессы могут обмениваться данными между этими устройствами, эмулируя терминальные взаимодействия. #для_начинающих

👍Пройдите тест по IoT👍 📌Пройдите тест из 10 вопросов и проверьте, насколько вы готовы к обучению на углубленном курсе «IoT
👍Пройдите тест по IoT👍 📌Пройдите тест из 10 вопросов и проверьте, насколько вы готовы к обучению на углубленном курсе «IoT Developer» от OTUS. Сможете сдать - пройдете на курс со скидкой! ⏰ Время прохождения теста ограничено 10 минут 👉ПРОЙТИ ТЕСТ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

#вопросы_с_собеседований Как подсчитать количество элементов в std::list? Чтобы подсчитать количество элементов в std::list, можно использовать следующие способы: 1. Вызвать метод size() самого списка. Он вернет количество элементов. 2. Проитерировать список циклом и считать элементы. 3. Воспользоваться алгоритмом std::distance, передав ему начало и конец списка. 4. Применить алгоритм std::count_if с условием, которое всегда истинно.

Про логирование и как его ускорить Как-то раз я ускорял логгер через io_uring, т.к. скорость логгера не позволяла совмещать активную торговлю и достаточное количество информации для расследования случившихся инцидентов. Поэтому расскажу что понял на эту тему. Простое логирование состоит из 2х частей: форматирование и вывод. Различные throttle'ры, примочки, фильтры, окрашиватели рассматривать не будем. Форматирование: 1) std::stringstream - не стоит, не надо: это медленно. 2) std::snprintf - не стоит, не надо: медленно, не современно. 3) std::format, поддерживается только с C++20. Я его не смотрел, но подозреваю, что в текущем виде libfmt будет быстрее. 4) libfmt - базовый выбор, достаточно быстрый. Для самых критических областей добавляем FMT_COMPILE, но не повсюду. 5) Не форматировать вообще. Можно складывать бинарные данные в файл (подход Binlog), либо отправлять куда-то (но это получается уже телеметрия). Но тогда файл требует декодирования отдельной тулзой. Но это можно автоматизировать. 6) Выносить форматирование в отдельный поток. Интересный подход из Quill. Они encode'ят аргументы в буфер, и предполагается, что это быстрее, чем отформатировать. Попробую эту либу, и позже поделюсь впечатлениями. 7) Еще крайне желательно не вычислять формат аргументы, если текущий verbosity все равно не выведет эту строку. Это приводит нас к тому, что нам подходят только макросы в том месте, где юзеры вызывают логирование. Какие есть варианты по выводу сформированной строки на file storage: 1) Вывод в файл через: - std::ofstream::operator << и flush - fwrite + fflush (glibc) - один write syscall Выдают примерно одинаковые величины задержек. По логике можно представить, что дёрнуть просто syscall дешевле, но по факту разницу сложно увидеть. В первых двух вариантах можно не делать flush на каждую строку, это сильно быстрее (т.к. данные буферятся в юзерспейсе), но тогда: - Если долго нет новой строчки, то последнюю можно долго не видеть в логе. Но можно дополнительно flush'ить по таймеру. - Что-то потеряется при креше, т.к. останется в памяти процесса. Однако это можно достать из кордампа gdb-скриптюней (такое не писал, но выглядит осуществимым). Проблемы: средняя скорость min/avg: до 1 микроса, но периодически write может сделать серьезный пик, уходя в запись на устройство на 1-5мс (это на nvme). Можно попробовать понастраивать механизм сбрасывания dirty pages (см. sysctl -a | grep vm.dirty_). 2) Передаём задачу записи в отдельный поток. Так делает, например, Quill. Это очень быстро (скорость: от сотни наносекунд, если используете простую очередь, mutex и cv, и несколько наносекунд, если пишете в ring buffer (если не боитесь переполнения и нет параллельных вызовов)), но имеет свои недостатки: - Этому отдельному потоку тоже нужно какое-то (неторговое) ядро. - При креше вы можете потерять несколько последних строк (а именно они обычно нужны при креше). Снова можно пробовать выковыривать из крешдампа, но это неудобно. Скорее всего, можно дождаться дозаписи в крэшхэндлере. 3) Запись в ядре через io_uring: выглядит интересно, но имеет свои сложности: код надо очень аккуратно писать, понимать как настраивать kworker'ы (куда их пиннить, какие там размеры буферов и т.п.). Подходит для kernel'ов старше 5.1. В случае креша без специальных приседаний ядро не дозапишет строки. Я эту штуку использовал, и было интересно познакомиться с механизмом. Ждал дозаписи строк в крэш-хэндлере. 4) Запись в отдельном своём сервисе. Как ему максимально быстро передать строку - отдельный непростой вопрос, который может сильно всё усложнить. Сервисом тоже нужно управлять, деплоить, он тоже может упасть. 5) Вариант предыдущего пункта: выводить в stdout и писать в файловую систему через стандартный сервис (journald, dockerd). Тоже один syscall, поэтому по скорости как запись в файл, но без пиков в несколько миллисов. Довольно быстро, стандартно. Легко поддержать ротацию. Если процесс крашнется сразу после лог строчки, то демон всё дозапишет. Дополняйте, если что, или поправьте.

Александр пишет про C++ разработку, concurrency, low-latency алгоритмы, high frequency trading, tips & tricks по утилитам для разработчиков, и проводит бесплатные практические воркшопы. Стоит почитать.

spaceship operator Spaceship operator (&lt;=&gt;) — это оператор сравнения, введенный в C++20. Преимущества spaceship operato
spaceship operator Spaceship operator (<=>) — это оператор сравнения, введенный в C++20. Преимущества spaceship operator: — Позволяет создавать типы, которые можно сравнивать с помощью одного оператора вместо нескольких (==, !=, <, > и т. д.). — Упрощает написание функций сравнения, например std::sort. — Читабельнее и компактнее кода с традиционными операторами сравнения.

#вопросы_с_собеседований Что случится, если вернуть ссылку на временный объект? Если вернуть ссылку на временный объект, созданный в стеке, то это приведет к неопределенному поведению программы. После выхода из функции память, выделенная под временный объект, освобождается. И если где-то сохранилась ссылка на этот объект, то при попытке обратиться к нему произойдет ошибка.

@seniorcpp 22.07 🦾Хардкорный тест по языку С🦾 📌Пройдите тест из 20 вопросов и проверьте, насколько вы готовы к обучению на
@seniorcpp 22.07 🦾Хардкорный тест по языку С🦾 📌Пройдите тест из 20 вопросов и проверьте, насколько вы готовы к обучению на углубленном курсе «Программист С» от OTUS. Сможете сдать - пройдете на курс по спеццене! ⏰ Время прохождения теста ограничено 30 минут 👉ПРОЙТИ ТЕСТ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

«Код-ревью — это когда твои комментарии в интернете действительно читают»: дискуссия с разработчиками на C++ Смотреть статью

Неуязвимого кода не существует. Абсолютно защищённых данных – тоже. Зато есть способы восстановить информацию после серьёзног
Неуязвимого кода не существует. Абсолютно защищённых данных – тоже. Зато есть способы восстановить информацию после серьёзного сбоя или атаки. Именно о способах восстановления повреждённых данных мы и поговорим на открытом вебинаре «Создаём бэкапы для Ethereum-блокчейна на Rust» Вы познакомитесь с принципами хранения и развития данных в блокчейн-системах, увидите, как с помощью Rust эффективно переиспользовать код для разных задач на разных целевых платформах. Вебинар проведёт Кирилл Федченко, опытный программист на Rust, Python, C++ Будет интересно и Rust-разработчикам и тем, кто использует другие языки. 23 июля, 19:00 МСК Бесплатно Записаться на событие - https://otus.pw/wDX8/?erid=LjN8JzxEG Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

Концепт IterToComparable Концепт IterToComparable появился в стандарте C++20 и используется для проверки того, что итератор у
Концепт IterToComparable Концепт IterToComparable появился в стандарте C++20 и используется для проверки того, что итератор указывает на объекты, которые можно сравнивать. Этот концепт позволяет убедиться, что можно сравнивать объекты, на которые ссылается итератор, с помощью операторов сравнения как <, <=, >, >=. В примере используется концепт iter_to_comparable для проверки, что итератор по std::vector указывает на сравнимые объекты int. Это позволяет корректно найти минимальный элемент с помощью std::min_element.

Библиотека концепций Библиотека концепций — это набор функций и классов, которые позволяют определять и проверять концепции.
Библиотека концепций Библиотека концепций — это набор функций и классов, которые позволяют определять и проверять концепции. Концепция - это набор логических предикатов, которые определяют свойства типа или выражения. Концепции могут использоваться для проверки типов параметров шаблонов, определения совместимости типов и повышения безопасности и надежности кода. Библиотека концепций была введена в стандарт C++ 20. Она основана на концепциих Boost, которые были реализованы в библиотеке Boost еще в 2005 году. #для_продвинутых