⚡️Скорость разработки ПО падает по мере роста размера проекта. Инструменты разработки не могут изменить тенденции, а лишь замедлить и отсрочить неизбежное. SOLID является одной из практик, которая гарантирует неизменность скорости разработки.
Узнайте больше про SOLID-принципы на бесплатном вебинаре онлайн-курса «Архитектура и шаблоны проектирования» в Отус — «SOLID как условие постоянной скорости разработки»: регистрация
На бесплатном занятии мы:
— разберем, почему SOLID принципы являются достаточным условием сохранения скорости разработки;
— рассмотрим простой и понятный механизм их применения для получения повторно используемого кода.
🔥Экспертизой поделится Евгений Тюменцев — опытный директор компании по разработке программного обеспечения.
Нативная интеграция. Информация о продукте www.otus.ru
Как вывести форматированный текст на экран в C++
Рано или поздно у каждого программиста появляется желание вывести форматированный текст на экран. Немудрено, у пляшущих на экране буковок есть свой неповторимый шарм, а факт форматированности добавляет им еще и загадочности — мы можем даже не догадываться, что в точности будет напечатано. Но как сделать это оптимально и кроссплатформенно?
Читать статью
Разница в быстроте у постфиксных и префиксных инкрементных операторов
В постфиксных операторах производится дополнительная операция сохранения предыдущего состояния объекта, а затем только увеличение на 1, а в префиксном операторе после инкрементирования объекта, сразу возвращается ссылка объект. Префиксные операторы быстрее. Сигнатура их отличается фиктивным параметром int у постфиксного оператора.
#код
Проверить, найден ли элемент в массиве С++
В С++ вы должны использовать std::find и проверить, указывает ли результирующий указатель на конец диапазона.
#вопросы_с_собеседований
Генерируем пароли с помощью C++
Эта программа создает константы для допустимых символов в пароле и для длины пароля. Затем она инициализирует генератор случайных чисел и генерирует пять случайных паролей.
Каждый пароль формируется путем выбора случайного символа из всего набора символов. Этот процесс повторяется до достижения желаемой длины пароля.
#код
Как два байта переслать: контрибьютим в KPHP
KPHP — компилятор для PHP. Он конвертирует PHP код в код на C++, компилируя который, ускоряет производительность в десятки раз. Это open-source проект, созданный ВКонтакте. Благодаря ему собирается огромный монолит ВКонтакте на 9 миллионов строк PHP кода в обычный бинарник, запуская который вы локально поднимаете полноценный ВКонтакте.
Читать статью
🤔Где получить продвинутые навыки коммерческой разработки на C++?
❗️ Запишитесь на онлайн-курс «C++ Developer. Professional»в OTUS.
Обучение длится 5 месяцев. За это время вы погрузитесь в современные проблемы языка и его специфику, освоите паттерны проектирования, принципы написания многопоточного кода и поймете, как взаимодействовать с сетью, хранить и обрабатывать большие объемы данных.
Все эти навыки вы освоите на живых вебинарах и практике с Senior-специалистами.
❓ Готовы начать свой путь от Junior до уверенного Middle-разработчика?
➡️ 02.08 - регистрация на открытый урок "Многопоточное программирование в C++: синхронизация и параллелизм"https://otus.pw/pyi1/- Возможна оплата курса в рассрочку.
Нативная интеграция. Информация о продукте www.otus.ru
Изменяемые лямбда-функции
Ключевое слово mutable используется для сохранения состояния в лямбда-функциях. Обычно оператор вызова функции замыкания является константным. Другими словами — лямбда не может модифицировать переменные, захваченные по значению.
Но ключевое слово mutable может быть применено ко всей лямбда-функции, что сделает все её переменные изменяемыми.
Следует заметить, что в отличии от mutable-переменных в объявлении класса, мутабельные лямбда-функции должны использоваться относительно редко и очень аккуратно. Сохранение состояния между вызовами лямбда-функции может быть опасным и контринтуитивным.
#код
Что такое виртуальный деструктор и зачем он используется в C++?
В C++ виртуальный деструктор используется для правильного освобождения памяти при удалении объекта через указатель на базовый класс. Если базовый класс имеет виртуальный деструктор, то при удалении объекта через указатель на базовый класс будет вызван деструктор не только базового класса, но и всех его производных классов. Это позволяет избежать утечек памяти и неопределенного поведения при работе с полиморфными объектами.
Если виртуального деструктора не объявлено в базовом классе, то при удалении производного объекта через указатель на базовый класс будут вызваны только деструкторы базового класса, что может привести к утечкам памяти и неопределенному поведению.
#вопросы_с_собеседований
Задача
В текстовом файле, содержащем текст программы на языке Си, проверить соответствие открывающихся и закрывающихся фигурных скобок { и }. Результат проверки вывести на экран и записать в виде фразы в текстовый файл. Результат работы программы (вывод) поместить в отдельный текстовый файл (например, "out . txt " ), продублировав на экране.
#код
Узнаем длину аудио файла
В этом примере мы открываем файл с помощью std::ifstream, находим его размер, а затем вычисляем длительность аудио файла, зная частоту дискретизации (в данном случае 44100 Гц). Выводим длительность в минутах и секундах.
Убедитесь, что заменили "your_audio_file.wav" на путь к вашему аудио файлу, а также, если частота дискретизации вашего аудио файла отличается от 44100 Гц, замените это значение на соответствующее значение вашего аудио файла.
#код
Поиск в ширину
Поиск в ширину (breadth-first search, BFS) — это алгоритм поиска или обхода графа. Он исследует все вершины на одном уровне, прежде чем переходить к следующему уровню.
Этот пример иллюстрирует обход в ширину для следующего графа:
0
/ \
1-----2
\
3
Начиная с вершины 2, алгоритм BFS посетит вершины в следующем порядке: 2, 0, 3, 1.
#код