👋 Канал OTUS в Telegram!
Посты от приглашенных гостей из IT-тусовки, полезные статьи, подборки вакансий от партнеров ➞
Подробнее

Курсы

Программирование
Архитектор программного обеспечения Архитектура и шаблоны проектирования Архитектор высоких нагрузок Backend-разработчик на PHP
-30%
Scala-разработчик
-30%
Алгоритмы и структуры данных
-30%
Разработчик на Spring Framework
-20%
Разработчик Golang
-25%
C# ASP.NET Core разработчик
-25%
iOS-разработчик. Базовый курс
-25%
Android-разработчик. Базовый курс PostgreSQL Framework Laravel Разработчик Java Fullstack разработчик JavaScript Android-разработчик. Продвинутый курс Разработчик программных роботов (RPA) на базе UiPath и PIX Разработчик игр на Unity Vue.js разработчик Agile Project Manager в IT Интенсив «Оптимизация в Java» Супер - практикум по использованию и настройке GIT
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02
Посты
Синхронная асинхронность в C++

С___Deep_10-5020-8d2073.09_site.png

Наверняка все, кто изучал старый добрый стандарт C++11, знают о существовании в стандартной библиотеке вызова std::async, который позволяет выполнить некий код асинхронно (более точно – поведение указывается первым параметром вызова).

Согласно документации, вызов с параметром std::launch::async обещает выполнить пользовательский код в отдельном потоке. Посмотрим на приведённый ниже код.

Какие есть проблемы у систем сборки языка C++?

С___Deep_23-5020-25b88f.08_Site.png

Проблема только одна – отсутствие каких бы то ни было стандартных систем сборки. Но нас спасут нестандартные! В данном случае великий и ужасный CMake, в котором есть две переменные с не совсем очевидными отличиями.

Сделайте «снимок» кода С++, посмотрим что у вас!

С___Deep_9-5020-7511bd.10_site.png

Современный C++ породил странный страх сделать что-то недостаточно эффективно. По этой причине в коде часто можно встретить std::move совершенно не к месту. Или какие-то сложные телодвижения, нацеленные на избавление от копирования возвращаемого значения.

Иногда кажется, что это для многих стало чем-то вроде фобии. А-а-а-а, я тут лишнего скопировал! И пропал на час, придумывая как избавиться от него.

Копилка с дыркой: что такое опыт и стоит ли хранить всё?

Cplus_Deep_11.3_site-5020-6776fc.png

Очень мы любим накапливать опыт. Где-то по крупицам, где-то сквозь бессонные ночи, где-то перенимая у более опытных, набиваем свою собственную копилку опыта. И кажется всё правильно делаем, ведь не может быть такого, чтобы опыт был вреден. Столько всего пройдено и осмыслено. Столько всего применено и опробовано. Не голова, а сокровище.

Как распределяется вычислительный объём на ядрах?

C___Deep_24.5_site-5020-8af3aa.png

Пример из практики: изучали мы, значит, многопоточность. Для лучшего понимания и погружения нужно было выполнить простую задачу — написать функцию, которая максимально задействует CPU. Что угодно лишь бы без ввода-вывода. Для простоты можно было добиться того, чтобы на машине для запуска время работы такой функции было около двух секунд. Добившись этого, необходимо было запустить столько функций, сколько ядер.

Подводные камни внедрения глобальной HRMS-системы

С++Deep20.04_SITE_4.png

Несколько лет назад в одном крупном российском банке, в котором на тот момент было больше 50 офисов по всей стране, возникла задача внедрения глобальной HRMS-системы на базе Oracle e-Business Suite (далее OeBS).

Примечание: в OeBS входит больше 200 модулей. Кроме HRMS есть ешё финансы, логистика и др. Но в данном случае OeBS мы использовали только как HRMS.

В качестве пилота была внедрена OeBS-система в штаб-квартире московского офиса. Затем нужно было подключить 50+ филиалов в данную HMRS-систему, т.е. загрузить кадровые данные из всех филиалов в OeBS.

Модификаторы virtual

VKС++Deep4_21.06_SITE_3.png

Делюсь с вами рассказом своего коллеги - разработчика С++. Уверен, информация пригодится вам в проектах!

Наконец-то пришёл долгожданный SDK от компании-партнёра. Проблем с интеграцией в наш проект не возникло. Началась работа над имплементацией на нашей стороне.

Собственно говоря, всё представлялось исключительно чётким и ясным: мы наследуем базовый класс из SDK нашего партнёра, имплементируем необходимые интерфейсные методы, добавляем свои... Работа заняла пару-тройку дней. Настало время тестирования.

С++17: новые возможности

VKС++Deep5_21.06_SITE_2.png

Стандарт языка С++17 был принят относительно недавно – в декабре 2017 года. Тем не менее, уже как минимум два компилятора под Linux его поддерживают:

g++, начиная с версии 7.1; – clang, начиная с версии 5.

Список нововведений со времени предыдущего стандарта C++14 довольно велик. Посмотреть можно, например, Bartek's C++17 features list. В этой заметке остановимся всего на двух чертах, которые оказались полезными и удобными в практическом плане на конкретных примерах.