Удобное место, чтобы написать свою статью или просто почитать


​Современный мир не мыслим без работы в сети. Это может быть сеть предприятия, или Интернет, или какая-либо виртуальная частная сеть. Задачи, связанные с работой по сети, возникают в любой отрасли, практически без исключений. И если бы речь шла только о сайтах, раздающих статический материал, никому бы и в голову не пришло, писать это на С++. 

Популярная сейчас концепция "микросервисов" предлагает нам, создавать распределенные в сети приложения, на базе связанных между собой небольших программ, каждая из которых выполняет строго определенную (в идеале только одну) функцию в общей системе. Очень часто такие системы пишутся сразу на нескольких языках - например, ядро на С++, а "периферия" на Питоне.

Компоненты системы взаимодействуют между собой по сети, используя различные протоколы. Также предоставляется способ внешнего взаимодействия с системой. Обычно, в качестве способа интеграции с "внешним миром" реализуется протокол на базе REST (Uber, Яндекс.Диск, DigitalOcean, AWS, список почти бесконечен). Реализовать такое взаимодействие можно чуть ли не в автоматическом режиме (Swagger). Код в этом случае будет сгенерирован для любого языка... но не для С++.

Как же быть, если нам нужно использовать C++, для реализации веб-сервиса, поддерживающего REST-API ? Почему нам может понадобиться именно С++ для этой задачи? Об этом и многом другом поговорим далее.

Читать полностью | | | | 4409



Приведение типов в С++ часто обсуждается на собеседовании. Эта тема особенно актуальна, когда приходится много работать с унаследованным кодом на С. Операторы приведения в С++ давно стали всем привычны: const_cast, static_cast, dynamic_cast и reinterpret_cast. И, конечно, никуда не делось  "приведение в старом стиле" - оригинальный синтаксис С, согласно которому заключенный в скобках тип переменной применяется к выражению new_type ) expression

Сравнивая операторы приведения между собой, программисты без проблем определяют когда и какой оператор нужно применять. О многом "подсказывают" сами названия этих операторов. reinterpret_cast при этом, всегда сравнивают с приведением типов в стиле С. "Не гарантирует переносимость кода, опасно и нежелательно". Всё это правильно, но вопрос в чём же тогда разница? Что делает reinterpret_cast, а что приведение типов в стиле С ? Частый ответ - это одно и тоже! И тут начинаются дополнительные вопросы...

Читать полностью | | | | 2628



Использование Docker без sudo

Что такое Docker? Если Вы еще не знаете, то пора уже об этом хотя бы почитать. Возможно, он поможет Вам в работе и сделает жизнь чуточку проще. Docker, если кратко, это удобный "способ", разместить своё приложение в изолированном контейнере. А потом с этим контейнером можно отправиться куда угодно, и Ваше приложение будет гарантировано запускаться и работать.

Работать с Docker достаточно просто. Установили из репозитория, запустили Docker демона, и с помощью клиентских утилит выполняем всё, что нужно через командную строку. Официального GUI для Docker не существует, да и не нужен он для большинства задач.

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

Однако, есть простое и официальное решение избежать использования sudo при работе с Docker.

Читать полностью | | | | 886