Визуализатор структуры адреса на Си для Linux и Termux: Попасть в «Голову» кеш-линии

В 47 мои увлечения стали Си, Radare2 , Биты, Логика, Память. Изучая память зацепился за адреса. На адрес 0x7ffe10b284 можно смотреть бесконечно долго. Трудно сказать с ходу насколько удачно ваши данные легли в память. Влезают они в одну кеш-линию или размазаны по двум. Чтоб не заниматься битовой арифметикой в уме, я написал утилиту на Си для Linux и Termux. Она раскладывает младшие 12 бит адреса на 4 строки визуализации. Теперь сразу видно, попали мы в "Голову" или застряли в "Хвосте" кеш-линии. Утилита максимально легковесная. Вам не нужны сложные дебаггеры, достаточно gcc. Работает, как на десктопном Linux, так и в Termux на Android. Можно проверить выравнивание даже лёжа на диване.

https://habr.com/ru/articles/1026430/

#Кеш #низкоуровневое_программирование

Визуализатор структуры адреса на Си для Linux и Termux: Попасть в «Голову» кеш-линии

В 47 мои увлечения стали Си, Radare2 , Биты, Логика, Память. Изучая память зацепился за адреса. На адрес 0x7ffe10b284 можно смотреть бесконечно долго. Трудно сказать с ходу насколько удачно ваши...

Хабр

userver 3.0 — большой релиз фреймворка для IO‑bound‑программ, переход на C++20

Привет! На связи Антон Полухин из Техплатформы Городских сервисов Яндекса. После большого релиза 🐙 userver прошло почти два года. За это время мы обзавелись большим количеством внешних пользователей — международных и российских. При этом и количество внутренних пользователей подросло: в Городских сервисах Яндекса появились стни новых сервисов на userver. Функциональность Такси, Еды, Лавки, Доставки, а также Маркета, Финтеха, Фантеха, Электро и Техплатформы обогатилась новыми возможностями и новыми пользователями. А значит, фреймворк стал ещё надёжнее и оттестированнее. Мы не сидели сложа руки, и за два года реализовали, оптимизировали и добавили все обещанные в прошлой статье фичи, а также многое другое. Что нового в userver?

https://habr.com/ru/companies/yandex/articles/1012204/

#userver #c++ #c++20 ++20 ++ #optimization #optimizations #json #jsonschema #kafka

userver 3.0 — большой релиз фреймворка для IO‑bound‑программ, переход на C++20

Привет! На связи Антон Полухин из Техплатформы Городских сервисов Яндекса. После большого релиза 🐙 userver прошло почти два года. За это время мы обзавелись большим количеством внешних...

Хабр

Компиляторы тоже путаются в именах

Это продолжение темы начатой в статье Важны ли компилятору имена , и продолженой в Ночью все кошки серы, а using'и одинаковы , и если вам нужна полная картина, как компилятор превращает текст в программу, то без понимания поиска имён (name lookup) дальше двигаться уже не получится. Имена в тексте исходника это просто удобные ярлыки для людей: переменные, функции, типы. Но для компилятора имя являеются точкой входа в довольно сложный алгоритм, который должен однозначно определить, что именно вы имели в виду . И вот здесь начинается самое интересное: одинаково написанное имя в разных контекстах может означать совершенно разные вещи, а иногда даже не означать ничего вовсе, в зависимости от того, где и как оно используется. C++ в этом месте особенно коварен. Язык рос десятилетиями, и правила поиска имён эволюционировали вместе с ним: добавлялись пространства имён, шаблоны, ADL, двухфазный поиск. Всё это не просто усложнило модель, оно сделало её местами неинтуитивной даже для опытных разработчиков, добавим сюда еще, что разные компиляторы исторически реализовывали эти правила (по-своему) по-разному, и часть этих различий до сих пор всплывает в коде. Не нужно воспринимать компилятор как чёрный ящик, хотя порою поиск имён действительно выглядит как магия, но если разобрать его на отдельные шаги, то становится видно, что за этой «магией» стоит вполне строгая (хоть и исторически нагруженная) система правил. Попробую о ней рассказать. Какой-то странный, этот ваш с++

https://habr.com/ru/articles/1023334/

++ ++_программирование #ненормальное_программирование #разработка_игр #компиляторы

Компиляторы тоже путаются в именах

Это продолжение темы начатой в статье Важны ли компилятору имена , и продолженой в Ночью все кошки серы, а using'и одинаковы , и если вам нужна полная картина, как компилятор превращает текст в...

Хабр

Программа смены фона рабочего стола

Программа смены фона рабочего стола. При запуске, программа циклически меняет фон рабочего стола: Файл ->Solid Color->Файл ->Solid Color->…

https://habr.com/ru/articles/1022508/

++ #desktop #wallpaper

Программа смены фона рабочего стола

Добрый день. У меня, на домашнем компе, в качестве обоев установлен черный цвет, и я к нему привык, мне удобно работать с таким фоном. На моем не домашнем компе, стоят обои, довольно светлые. При...

Хабр

Ахиллесова пята C++ и будущая р̶е̶ эволюция

Недавно я опубликовал мнение о фундаментальной экономической модели разработки ПО, которая не способствует (и объективно не должна способствовать) массовому переходу с C/C++ на «безопасные» языки программирования Экономика безопасности кода или почему Rust не нужен . Но чтобы оставаться честным перед читателями, решил опубликовать и статью-контраргумент с описанием обратной стороны медали, то есть почему C++ всё равно будет рано или поздно заменён, а заодно попробовать разобрать, каким будет новый язык программирования, который неминуемо придёт на смену C++.

https://habr.com/ru/articles/1021684/

#программирование ++ #развитие_языков_программирования #эволюция_языка

Ахиллесова пята C++ и будущая р̶е̶ эволюция

Недавно я опубликовал мнение о фундаментальной экономической модели разработки ПО, которая не способствует (и объективно не должна способствовать) массовому переходу с C/C++ на «безопасные» языки...

Хабр

С++26 — готов! Итоги встречи ISO C++ в Кройдоне

Привет! На связи Антон Полухин из Техплатформы Городских сервисов Яндекса. На днях в Кройдоне состоялась встреча международного комитета по стандартизации языка программирования C++, в которой я принимал активное участие. В этот раз (как и в прошлый), всё внимание было сосредоточено на C++26 и… теперь он готов! Осталось пройти формальные этапы в вышестоящих инстанциях ISO, и мы получим C++26 который заслужили. В нём будут: – reflection, – контракты, – SIMD, – линейная алгебра, – расширенные возможности сonstexpr, – hardening, – Hazard Pointer и RCU, – #embed, – executors, – и многие другие полезные вещи. Подробности и новинки

https://habr.com/ru/companies/yandex/articles/1015474/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1015474

#contracts #reflection #c++26 ++26 ++ #программирование #simd #compiletime #compile_time #hardening

С++26 — готов! Итоги встречи ISO C++ в Кройдоне

Привет! На связи Антон Полухин из Техплатформы Городских сервисов Яндекса. На днях в Кройдоне состоялась встреча международного комитета по стандартизации языка...

Хабр

С++26 — готов! Итоги встречи ISO C++ в Кройдоне

Привет! На связи Антон Полухин из Техплатформы Городских сервисов Яндекса. На днях в Кройдоне состоялась встреча международного комитета по стандартизации языка программирования C++, в которой я принимал активное участие. В этот раз (как и в прошлый), всё внимание было сосредоточено на C++26 и… теперь он готов! Осталось пройти формальные этапы в вышестоящих инстанциях ISO, и мы получим C++26 который заслужили. В нём будут: – reflection, – контракты, – SIMD, – линейная алгебра, – расширенные возможности сonstexpr, – hardening, – Hazard Pointer и RCU, – #embed, – executors, – и многие другие полезные вещи. Подробности и новинки

https://habr.com/ru/companies/yandex/articles/1015474/

#contracts #reflection #c++26 ++26 ++ #программирование #simd #compiletime #compile_time #hardening

С++26 — готов! Итоги встречи ISO C++ в Кройдоне

Привет! На связи Антон Полухин из Техплатформы Городских сервисов Яндекса. На днях в Кройдоне состоялась встреча международного комитета по стандартизации языка...

Хабр

Асинхронное логирование в C++ — не серебряная пуля: что на самом деле ограничивает производительность

Асинхронное логирование давно считается “очевидной оптимизацией”: вынесли запись в отдельный поток — и всё стало быстрее. Но если копнуть глубже, оказывается, что это не совсем так. В предыдущей статье я разбирал производительность популярных C++ логгеров и показывал реальные цифры: 👉 https://habr.com/ru/articles/1012874/ Там уже было видно, что хорошо оптимизированное синхронное логирование может быть очень быстрым. В этой статье разберёмся, почему async logging не делает логирование быстрее само по себе , и что на самом деле происходит внутри:

https://habr.com/ru/articles/1017842/

++ #логирование #асинхронное_программирование #производительность #многопоточность

Сколько на самом деле стоит LOG_INFO(): benchmark библиотек логирования C++

Логирование есть практически в каждом C++ проекте. Почти любой сервис, демон или библиотека рано или поздно обрастает строками вроде LOG_INFO(...) или logger.debug(...) . Чаще всего библиотека...

Хабр

GDB для тех, кто думает, что отладка — это фантастика

cout - плохой отладчик! Как за 30 секунд найти место падения программы? Какие 7 команд GDB нужно знать каждому C++ разработчику? В этой статье я делюсь личным опытом: как я боялся GDB, думал, что это «магия для гуру», а потом понял, что 70% задач решается простыми командами. Спойлер: главный страх - это неизвестность. А когда знаешь backtrace , break , next , print и info locals , GDB становится лучшим другом. Статья рассчитана на начинающих C++ разработчиков, которые хотят перестать бояться терминала и начать отлаживать системно.

https://habr.com/ru/articles/1016430/

#gdb ++ #отладка

GDB для тех, кто думает, что отладка — это фантастика

Как перестать бояться segmentation fault и научиться находить баги за несколько минут Когда я начинал изучать C++, GDB казался мне чем-то из области фантастики. Чёрный экран, непонятные команды,...

Хабр

Ночью все кошки серы, а using'и одинаковы

Одной из самых сложных частей C++ до сих пор считаются правила поиска имён, и ошибки связанные с name lookup проявляются обычно уже в рантайме. Код компилится и даже работает какое-то время, но при свете луны ведёт себя не так как ожидает программист. За простыми идентификаторами скрывается многоуровневая система областей видимости, категорий имён и специальных правил, и очень многое в нашем текущем стандарте растёт прямиком из восьмидесятых, частенько без изменений. Давайте посмотрим как компилятор видит имена в C++, какие области видимости существуют и почему они ведут себя по-разному. В C++ есть несколько типов областей видимости, вы наверное сходу назовёте глобальное пространство имён, область параметров шаблона, область видимости класса и область параметров функции, но также есть блочная область видимости и область видимости перечислений. Между этими областями есть исторически сложившаяся асимметрия, которая частенько удивляет: два объявления using, которые вводят одно и то же имя в одну и ту же область видимости внутри пространства имён компилятор съест без возражений, но если попытаться сделать то же самое других областях видимости, то получим ошибку на повторное объявление. В серии статей про "нескучное программирование" я разбираю скользкие случаи и как мы докатились до такого. Это продолжение темы, начатой в "Важны ли компилятору имена" , поэтому чтобы картинка была цельной, лучше пробежать её по диагонали.

https://habr.com/ru/articles/1015492/

++ #программирование #игры #разработка_игр #ненормальное_программирование

Ночью все кошки серы, а using'и одинаковы

Одной из самых сложных частей C++ до сих пор считаются правила поиска имён, и ошибки связанные с name lookup проявляются обычно уже в рантайме. Код компилится и даже работает какое-то время, но при...

Хабр