среда, 14 июня 2023 г.

[prog.c++] Несколько интересных статей с devblogs.microsoft.com

В последние дни на глаза попалось несколько любопытных статей, ссылки на которые захотелось сохранить в склерознике. Вот, делаю это в виде блог-поста.

How to check if a pointer is in a range of memory. Просто и наглядно на тему того, почему сравнивать указатели на больше/меньше так себе идея (хотя, признаюсь, временами мало того, что хочется, так еще и нужно). Там же описан и один легальный способ сделать это (если у вас в компиляторе есть uintptr_t). Если не ошибаюсь, еще безопасно использовать std::less для указателей. Но если ошибаюсь, то буду признателен, если меня поправят. Спасибо ув.тов.Сергею Скороходову за ссылку.

Reordering C++ template type parameters for usability purposes, and type deduction from the future. Имхо, полезная статья для тех, кто начинает упарываться шаблонной магией и сталкивается с тем, что у того же std::vector есть несколько шаблонных параметров и иногда это приходится учитывать. Кроме того, в случае данной статьи следует обратить внимание и на комментарии.

The move constructor that you have to declare, even though you don’t want anyone to actually call it. Статья для тех, кто как и я не знал, что для NRVO (named return value optimization) требуется, чтобы в типе был описан конструктор перемещения. Даже не смотря на то, что вызов этого конструктора будет выброшен оптимизатором.

вторник, 13 июня 2023 г.

[network.ssh] Картинка-шпаргалка на тему ssh-tunneling

Не имел дела с ssh-тунелями лет пятнадцать, начал собирать информацию и понял, что штатные описания из man ssh до меня не доходят, туплю-с... А потом нашел отличную картинку-шпаргалку, которая все расставила по своим местам:

Источник: A Visual Guide to SSH Tunnels: Local and Remote Port Forwarding. Огромное спасибо автору картинки, Ivan Velichko (@iximiuz), за прекрасную по своей доходчивости иллюстрацию.

понедельник, 12 июня 2023 г.

[prog.c++] SObjectizer-5.7.5

Стала доступна версия 5.7.5 нашего проекта SObjectizer:

https://github.com/Stiffstream/sobjectizer/releases/tag/v.5.7.5

Ничего не было добавлено, ничего не было удалено. Исправлено поведение SObjectizer-а в некоторых ситуациях, которое могло приводить к проблемам. Подробнее можно прочитать в Wiki проекта: https://github.com/Stiffstream/sobjectizer/wiki/v.5.7.5

Эти и некоторые другие вещи (исправленные чуть ранее в 5.7.4.3) были обнаружены в процессе работы над новой версией 5.8.0. Разработка ветки 5.8 ведется с прошлого года и я боюсь предсказывать когда же состоится ее релиз. Но очень надеюсь на то, что основная часть работы с кодом уже позади. Далее предстоит обновить существующую и дописать недостающую документацию. Это, полагаю, минимум пару недель работы. Если, конечно, в процессе документирования не выяснятся какие-то косяки (что случалось в прошлом). Так что надеюсь, что 5.8.0 уже на финишной прямой, но вот длина этой самой прямой пока точно не известна :)

В общем, проект все еще жив и все еще развивается, так что не переключайтесь ;)