Базовые алгоритмы на графах
Обход графа в ширину (Поиск в ширину) aka BFS | Breadth First Search
Обход графа в глубину (Поиск в глубину) aka DFS | Depth First Search
Алгоритм Дейкстры
Алгоритм Флойда-Уоршелла
Алгоритм Прима
https://habr.com/ru/companies/timeweb/articles/751762/
#cpp #programming
👉 @cpp_lib
Обход графа в ширину (Поиск в ширину) aka BFS | Breadth First Search
Обход графа в глубину (Поиск в глубину) aka DFS | Depth First Search
Алгоритм Дейкстры
Алгоритм Флойда-Уоршелла
Алгоритм Прима
https://habr.com/ru/companies/timeweb/articles/751762/
#cpp #programming
👉 @cpp_lib
👍7⚡2
Полное руководство по CMake. Часть первая: Синтаксис
CMake — это открытый и кросс-платформенный набор утилит, предназначенных для автоматизации тестирования, компиляции и создания пакетов проектов на C/C++. Написав однажды небольшой и понятный всем скрипт, Вы тем самым обеспечите одинаковую сборку Вашего проекта на любых платформах, где доступен CMake.
Язык CMake, будучи транслированным в нативный файл сборки (например, Makefile или Ninja), определяет процесс всего управления проектом. В Вашем распоряжении, с функциональной стороны, есть лишь команды, которые могут образовываться в довольно сложные конструкции. С них мы и начнём.
https://telegra.ph/Polnoe-rukovodstvo-po-CMake-CHast-pervaya-Sintaksis-02-27
PS
Статья недоступна на хабре, достали из архива, все ссылки ведут через веб архив. При желании можно ручками поправить.
#cpp #programming
👉 @cpp_lib
CMake — это открытый и кросс-платформенный набор утилит, предназначенных для автоматизации тестирования, компиляции и создания пакетов проектов на C/C++. Написав однажды небольшой и понятный всем скрипт, Вы тем самым обеспечите одинаковую сборку Вашего проекта на любых платформах, где доступен CMake.
Язык CMake, будучи транслированным в нативный файл сборки (например, Makefile или Ninja), определяет процесс всего управления проектом. В Вашем распоряжении, с функциональной стороны, есть лишь команды, которые могут образовываться в довольно сложные конструкции. С них мы и начнём.
https://telegra.ph/Polnoe-rukovodstvo-po-CMake-CHast-pervaya-Sintaksis-02-27
PS
Статья недоступна на хабре, достали из архива, все ссылки ведут через веб архив. При желании можно ручками поправить.
#cpp #programming
👉 @cpp_lib
👍6⚡3
Полное руководство по CMake. Часть вторая: Система сборки
В данной статье рассмотрено использование системы сборки CMake, применяемой в колоссальном количестве проектов на C/C++. Строго рекомендуется прочитать первую часть руководства во избежание непонимания синтаксиса языка CMake, явным образом фигурирующего на протяжении всей статьи.
https://telegra.ph/Polnoe-rukovodstvo-po-CMake-CHast-vtoraya-Sistema-sborki-02-27
PS
Статья недоступна на хабре, достали из архива, все ссылки ведут через веб архив. При желании можно ручками поправить.
#cpp #programming
👉 @cpp_lib
В данной статье рассмотрено использование системы сборки CMake, применяемой в колоссальном количестве проектов на C/C++. Строго рекомендуется прочитать первую часть руководства во избежание непонимания синтаксиса языка CMake, явным образом фигурирующего на протяжении всей статьи.
https://telegra.ph/Polnoe-rukovodstvo-po-CMake-CHast-vtoraya-Sistema-sborki-02-27
PS
Статья недоступна на хабре, достали из архива, все ссылки ведут через веб архив. При желании можно ручками поправить.
#cpp #programming
👉 @cpp_lib
👍7
C++ Programming: Implicit and Explicit Constructors
https://dev.to/aboss123/c-programming-implicit-and-explicit-constructors-27be
#cpp #programming
👉 @cpp_lib
https://dev.to/aboss123/c-programming-implicit-and-explicit-constructors-27be
#cpp #programming
👉 @cpp_lib
👍3⚡2
Полное руководство по CMake. Часть третья: Тестирование и пакетирование
Данная статья повествует о тестировании и пакетировании программ при помощи CMake — гибкого и универсального набора утилит для разработки различных программных продуктов. Строго рекомендуется прочитать первую и вторую части руководства во избежание непонимания синтаксиса и принципа работы CMake.
PS
Статья недоступна на хабре, достали из архива, все ссылки ведут через веб архив. При желании можно ручками поправить.
https://telegra.ph/Polnoe-rukovodstvo-po-CMake-CHast-tretya-Testirovanie-i-paketirovanie-02-27
#cpp #programming
👉 @cpp_lib
Данная статья повествует о тестировании и пакетировании программ при помощи CMake — гибкого и универсального набора утилит для разработки различных программных продуктов. Строго рекомендуется прочитать первую и вторую части руководства во избежание непонимания синтаксиса и принципа работы CMake.
PS
Статья недоступна на хабре, достали из архива, все ссылки ведут через веб архив. При желании можно ручками поправить.
https://telegra.ph/Polnoe-rukovodstvo-po-CMake-CHast-tretya-Testirovanie-i-paketirovanie-02-27
#cpp #programming
👉 @cpp_lib
⚡2👍1
Быстрый парсинг 8-битных целых чисел
Допустим, вам нужно быстро распарсить 8-битные целые числа (0, 1, 2, …, 254, 255) из строки ASCII/UTF-8. Задача взята из проекта simdzone под руководством Йероена Коеккоека (NLnet Labs). Дана строка и её длина: например, ’22’ и длина 2. Наивное решение на C может выглядеть так:
https://habr.com/ru/articles/784102/
#cpp #programming
👉 @cpp_lib
Допустим, вам нужно быстро распарсить 8-битные целые числа (0, 1, 2, …, 254, 255) из строки ASCII/UTF-8. Задача взята из проекта simdzone под руководством Йероена Коеккоека (NLnet Labs). Дана строка и её длина: например, ’22’ и длина 2. Наивное решение на C может выглядеть так:
int parse_uint8_naive(const char *str, size_t len, uint8_t *num) {
uint32_t n = 0;
for (size_t i = 0, r = len & 0x3; i < r; i++) {
uint8_t d = (uint8_t)(str[i] - '0');
if (d > 9)
return 0;
n = n * 10 + d;
}
*num = (uint8_t)n;
return n < 256 && len && len < 4;
}
https://habr.com/ru/articles/784102/
#cpp #programming
👉 @cpp_lib
👍2🔥2⚡1
Media is too big
VIEW IN TELEGRAM
Why Avoid Pointer Arithmetic?
Calling all C++ developers: A free preview of CLion with much faster core IDE functions is out! 🎉 Introducing CLion Nova – a version of CLion with the C++ language engine from ReSharper C++ and JetBrains Rider. It brings:
Faster highlighting speeds
A more responsive UI
Significantly fewer freezes and hangs in refactorings
источник
#cpp #programming
👉 @cpp_lib
Calling all C++ developers: A free preview of CLion with much faster core IDE functions is out! 🎉 Introducing CLion Nova – a version of CLion with the C++ language engine from ReSharper C++ and JetBrains Rider. It brings:
Faster highlighting speeds
A more responsive UI
Significantly fewer freezes and hangs in refactorings
источник
#cpp #programming
👉 @cpp_lib
⚡2
Статьи серии SObjectizer Tales
Некоторое время назад я искал альтернативы библиотеке Asynchronous Agents от Microsoft. Я разработал приложение для Windows, взаимодействующее с промышленными камерами и выполняющее множество задач, таких как визуализация и распознавание объектов, и мне нужно было, чтобы оно работало на других платформах.
1. Producing Images
2. Can you call me back?
3. Acquisition loop revisited
4. Handling commands
5. Sending commands
6. Is the stream still in progress?
7. Agent composition
8. Representing errors
9. Splitting work
10. Handling GUI from main
11. Interlude: testing
12. Receiving commands from the network
13. Routing images across the network
14. Triggering agent shutdown
15. Monitoring disconnections
16. Interrupting work
17. Limiting message flow
18. Limiting message chains
19. Thread-safe handlers
20. Performance, part 1
21. Performance, part 2
https://dev.to/ilpropheta/sobjectizer-tales-prelude-5bi8
#cpp #programming
👉 @cpp_lib
Некоторое время назад я искал альтернативы библиотеке Asynchronous Agents от Microsoft. Я разработал приложение для Windows, взаимодействующее с промышленными камерами и выполняющее множество задач, таких как визуализация и распознавание объектов, и мне нужно было, чтобы оно работало на других платформах.
1. Producing Images
2. Can you call me back?
3. Acquisition loop revisited
4. Handling commands
5. Sending commands
6. Is the stream still in progress?
7. Agent composition
8. Representing errors
9. Splitting work
10. Handling GUI from main
11. Interlude: testing
12. Receiving commands from the network
13. Routing images across the network
14. Triggering agent shutdown
15. Monitoring disconnections
16. Interrupting work
17. Limiting message flow
18. Limiting message chains
19. Thread-safe handlers
20. Performance, part 1
21. Performance, part 2
https://dev.to/ilpropheta/sobjectizer-tales-prelude-5bi8
#cpp #programming
👉 @cpp_lib
⚡3👍1
Файловый ввод, сделанный по-человечески
Поводом к написанию данной статьи и к разработке соответствующей мини-библиотеки ffh стало одно из практических заданий по дисциплине ‘Языки программирования’, которую я веду. В этом задании необходимо прочитать все строки из текстового файла для последующей обработки. Так вот, у студентов, выбравших для выполнения этого задания язык C++ [язык программирования выбирается студентом для каждого задания, но чаще всего выбирают C++ или Python], почему-то иногда читалась из файла лишняя пустая строка. В прошлые годы я не придавал этому большого значения, но в последний раз решил таки разобраться в чём проблема. В тексте задания у меня было написано примерно следующее:
Чтобы прочитать строку из файла на языке C++ используйте такой код:
https://habr.com/ru/articles/797321/
#cpp #programming
👉 @cpp_lib
Поводом к написанию данной статьи и к разработке соответствующей мини-библиотеки ffh стало одно из практических заданий по дисциплине ‘Языки программирования’, которую я веду. В этом задании необходимо прочитать все строки из текстового файла для последующей обработки. Так вот, у студентов, выбравших для выполнения этого задания язык C++ [язык программирования выбирается студентом для каждого задания, но чаще всего выбирают C++ или Python], почему-то иногда читалась из файла лишняя пустая строка. В прошлые годы я не придавал этому большого значения, но в последний раз решил таки разобраться в чём проблема. В тексте задания у меня было написано примерно следующее:
Чтобы прочитать строку из файла на языке C++ используйте такой код:
std::string s;
std::getline(f, s);
https://habr.com/ru/articles/797321/
#cpp #programming
👉 @cpp_lib
Хабр
Файловый ввод, сделанный по-человечески
Поводом к написанию данной статьи и к разработке соответствующей мини-библиотеки ffh стало одно из практических заданий по дисциплине ‘Языки программирования’, которую я веду. В этом задании...
👍4⚡1
Media is too big
VIEW IN TELEGRAM
Полезные материалы для С++ разработчика: о новом стандарте, висячих ссылках и технических собеседованиях
Принесли материалы с недавнего митапа по С++ — сохраняйте в закладки, чтобы посмотреть на новогодних каникулах. Что интересного ждет в подборке?
Дискуссия о технических собеседованиях, из которой вы узнаете, какие красные флаги кандидатов отмечает Константин Владимиров, как Елена Степанова относится к алгоритмическим задачам и почему Илье Шишкову важны софтскиллы.
Обзор приятных и неприятных фич С++ 23 с точки зрения практикующего разработчика, который опробовал новый стандарт на реальных проектах.
Дюжина примеров, когда механизм lifetime extension не работает, и ответы на вопросы, что делать в таких ситуациях и как избежать последствий — ненавистных висячих ссылок.
Монады, обертки, std::expected: плюсы и минусы С++ 23 глазами практикующего разработчика
Рассказал: Илья Казаков, С++ разработчик в команде систем хранения данных, YADRO
Коротко о сути доклада: Обсудили, какие проблемы закрыл, а какие создал новый стандарт языка. Илья на примерах показал, как работает новая функциональность и в каких задачах можно применять фичи С++ 23. Его фавориты — монадический std::optional и std::expected, а удаленные опции aligned_storage и aligne_union Илья обещает помнить всегда.
https://habr.com/ru/companies/yadro/articles/783472/
#cpp #programming
👉 @cpp_lib
Принесли материалы с недавнего митапа по С++ — сохраняйте в закладки, чтобы посмотреть на новогодних каникулах. Что интересного ждет в подборке?
Дискуссия о технических собеседованиях, из которой вы узнаете, какие красные флаги кандидатов отмечает Константин Владимиров, как Елена Степанова относится к алгоритмическим задачам и почему Илье Шишкову важны софтскиллы.
Обзор приятных и неприятных фич С++ 23 с точки зрения практикующего разработчика, который опробовал новый стандарт на реальных проектах.
Дюжина примеров, когда механизм lifetime extension не работает, и ответы на вопросы, что делать в таких ситуациях и как избежать последствий — ненавистных висячих ссылок.
Монады, обертки, std::expected: плюсы и минусы С++ 23 глазами практикующего разработчика
Рассказал: Илья Казаков, С++ разработчик в команде систем хранения данных, YADRO
Коротко о сути доклада: Обсудили, какие проблемы закрыл, а какие создал новый стандарт языка. Илья на примерах показал, как работает новая функциональность и в каких задачах можно применять фичи С++ 23. Его фавориты — монадический std::optional и std::expected, а удаленные опции aligned_storage и aligne_union Илья обещает помнить всегда.
https://habr.com/ru/companies/yadro/articles/783472/
#cpp #programming
👉 @cpp_lib
👍4
Media is too big
VIEW IN TELEGRAM
TCP/IP сети с помощью Boost.Asio
Boost.Asio - это кроссплатформенная библиотека C++ для программирования сетей и низкоуровневого ввода-вывода, которая предоставляет разработчикам последовательную асинхронную модель с использованием современного подхода C++.
В этом месяце Ричард Томсон продолжит наше знакомство с Boost.Asio рассмотрением сетевых технологий TCP/IP. Мы рассмотрим, как реализовать клиент NNTP (Network News Transport Protocol) с помощью Boost.Asio. NNTP - это линейно-ориентированный протокол для чтения новостных статей usenet. Это даст нам представление обо всех типичных проблемах, связанных с сетевыми приложениями TCP/IP:
- Как преобразовать имя хоста в IP-адрес?
- Как установить долговременное соединение с сервером NNTP?
- Как обрабатывать произвольно большие объемы данных с NNTP-сервера, которые поступают асинхронно?
- Как мы координируем ввод данных пользователем с вводом/выводом NNTP?
- Как мы справляемся с неожиданными сетевыми ошибками?
источник
#cpp #programming
👉 @cpp_lib
Boost.Asio - это кроссплатформенная библиотека C++ для программирования сетей и низкоуровневого ввода-вывода, которая предоставляет разработчикам последовательную асинхронную модель с использованием современного подхода C++.
В этом месяце Ричард Томсон продолжит наше знакомство с Boost.Asio рассмотрением сетевых технологий TCP/IP. Мы рассмотрим, как реализовать клиент NNTP (Network News Transport Protocol) с помощью Boost.Asio. NNTP - это линейно-ориентированный протокол для чтения новостных статей usenet. Это даст нам представление обо всех типичных проблемах, связанных с сетевыми приложениями TCP/IP:
- Как преобразовать имя хоста в IP-адрес?
- Как установить долговременное соединение с сервером NNTP?
- Как обрабатывать произвольно большие объемы данных с NNTP-сервера, которые поступают асинхронно?
- Как мы координируем ввод данных пользователем с вводом/выводом NNTP?
- Как мы справляемся с неожиданными сетевыми ошибками?
источник
#cpp #programming
👉 @cpp_lib
👍3🔥3❤1⚡1
🧲 Magnet
Минималистичный менеджер зависимостей для вашего следующего проекта на C++.
Настраивайте меньше, пишите больше.
https://github.com/Futureblur/magnet
#cpp #programming
👉 @cpp_lib
Минималистичный менеджер зависимостей для вашего следующего проекта на C++.
Настраивайте меньше, пишите больше.
https://github.com/Futureblur/magnet
#cpp #programming
👉 @cpp_lib
👍3🔥2⚡1
Media is too big
VIEW IN TELEGRAM
Подводные камни lifetime extension: 20 слайдов о том, когда он не работает
Иногда этот механизм просто работает, а иногда нет, но мы про это не знаем. Погрузимся в стандарт, lifetime и временные объекты, чтобы научиться избегать висячих ссылок.
00:00 - немного о докладчице
01:25 - зачем про это думать
02:25 - пример, как и когда работает
04:40 - что такое временный объект (и полезные материалы на тему)
08:25 - как отличить lifetime extension для временных объектов
10:20 - что происходит, если пройти по висячей ссылке
11:55 - про copy elision, внешне похожий на lifetime extension
14:05 - про range based for
15:00 - про xvalue
16:35 - про хранение ссылки на временный объект полем класса
17:20 - про тернарные операторы
18:15 - когда еще нет точных гарантий, что сработает
18:45 - рекомендации по работе с lifetime extension
21:20 - вопросы докладчице
источник
#cpp #programming
👉 @cpp_lib
Иногда этот механизм просто работает, а иногда нет, но мы про это не знаем. Погрузимся в стандарт, lifetime и временные объекты, чтобы научиться избегать висячих ссылок.
00:00 - немного о докладчице
01:25 - зачем про это думать
02:25 - пример, как и когда работает
04:40 - что такое временный объект (и полезные материалы на тему)
08:25 - как отличить lifetime extension для временных объектов
10:20 - что происходит, если пройти по висячей ссылке
11:55 - про copy elision, внешне похожий на lifetime extension
14:05 - про range based for
15:00 - про xvalue
16:35 - про хранение ссылки на временный объект полем класса
17:20 - про тернарные операторы
18:15 - когда еще нет точных гарантий, что сработает
18:45 - рекомендации по работе с lifetime extension
21:20 - вопросы докладчице
источник
#cpp #programming
👉 @cpp_lib
⚡5👍2
Тестовое в Firefly Studios или игра за час
Пару недель назад, на меня вышла HR "светлячков" и пригласила поговорить о позиции AI программера в их новую старую игру. Я был несколько удивлен, потому что знаком с парой ребят из студии и знаю, что найм у них сейчас остановлен. Но всегда интересно пообщаться с умными людьми, поэтому отказываться не стал. Первый созвон с HR вышел стандартный, где над чем работал, какие игры шипнул. Не очень понимаю зачем все это было спрашивать, если все это есть на линкедине подробно и с датами. Ну да ладно - видно такая их эйчарская доля по тридцать три раза переспрашивать. Или HR дальше второй страницы просто поленилась почитать.
Забукали время технического интервью. В полдень четверга на встречу приходит сотрудник студии и начинает просматривать резюмешку дальше второй страницы, где натыкается на скрин опенсорсного проекта StoneKingdoms, в который я некоторое время активно комитил. Проект, если что, получил благословение самого Simon Bradbury (владельца студии), так что проблем с правами на использование ресурсов из Stronghold нет. Посыпались вопросы, а что за проект? а как делаете? и что все на lua? а как же плюсы? Где-то на середине разговора к нам подключился другой разработчик "светлячков", с которым мое знакомство началось еще в 2010, когда он помогал восстанавливать исходники Caesar III и просто давал консультации как реализована игровая симуляция. Мы и сейчас иногда общаемся на форуме по ремейкам старых игр.
https://habr.com/ru/articles/781034/
#cpp #programming
👉 @cpp_lib
Пару недель назад, на меня вышла HR "светлячков" и пригласила поговорить о позиции AI программера в их новую старую игру. Я был несколько удивлен, потому что знаком с парой ребят из студии и знаю, что найм у них сейчас остановлен. Но всегда интересно пообщаться с умными людьми, поэтому отказываться не стал. Первый созвон с HR вышел стандартный, где над чем работал, какие игры шипнул. Не очень понимаю зачем все это было спрашивать, если все это есть на линкедине подробно и с датами. Ну да ладно - видно такая их эйчарская доля по тридцать три раза переспрашивать. Или HR дальше второй страницы просто поленилась почитать.
Забукали время технического интервью. В полдень четверга на встречу приходит сотрудник студии и начинает просматривать резюмешку дальше второй страницы, где натыкается на скрин опенсорсного проекта StoneKingdoms, в который я некоторое время активно комитил. Проект, если что, получил благословение самого Simon Bradbury (владельца студии), так что проблем с правами на использование ресурсов из Stronghold нет. Посыпались вопросы, а что за проект? а как делаете? и что все на lua? а как же плюсы? Где-то на середине разговора к нам подключился другой разработчик "светлячков", с которым мое знакомство началось еще в 2010, когда он помогал восстанавливать исходники Caesar III и просто давал консультации как реализована игровая симуляция. Мы и сейчас иногда общаемся на форуме по ремейкам старых игр.
https://habr.com/ru/articles/781034/
#cpp #programming
👉 @cpp_lib
👍3⚡2
Корутины C++ для чайников: пишем асинхронный веб-клиент
Написать этот материал меня побудило... отсутствие хороших статей по корутинам в C++ в русскоязычном интернете, как бы странно это не звучало. Ну серьезно, C++20 существует уже несколько лет как, но до сих пор почти все статьи про корутины, что встречаются в рунете, относятся к одному из двух типов. Или обзор начинается с самых глубин и мелочей, пересказывая cppreference, а потом автор выдыхается и все сводится к "ну а дальше все понятно, возьмите и примените это в своем коде", что напоминает известную картинку с совой. Либо иногда в статьях рассматривается применение корутин на примере генераторов, и этим все и ограничивается. Но, давайте будем честны, генераторы — это замечательно, но за все время моей многолетней карьеры разработчика я, вероятно, делал что‑то подобное генераторам разве что разок, в то время как асинхронный ввод‑вывод приходится использовать почти в каждом проекте. И поэтому меня гораздо больше интересует реализация асинхронного ввода‑вывода с использованием корутин, а не генераторы. Поэтому пришлось разбираться во всем самому.
https://habr.com/ru/articles/798935/
#cpp #programming
👉 @cpp_lib
Написать этот материал меня побудило... отсутствие хороших статей по корутинам в C++ в русскоязычном интернете, как бы странно это не звучало. Ну серьезно, C++20 существует уже несколько лет как, но до сих пор почти все статьи про корутины, что встречаются в рунете, относятся к одному из двух типов. Или обзор начинается с самых глубин и мелочей, пересказывая cppreference, а потом автор выдыхается и все сводится к "ну а дальше все понятно, возьмите и примените это в своем коде", что напоминает известную картинку с совой. Либо иногда в статьях рассматривается применение корутин на примере генераторов, и этим все и ограничивается. Но, давайте будем честны, генераторы — это замечательно, но за все время моей многолетней карьеры разработчика я, вероятно, делал что‑то подобное генераторам разве что разок, в то время как асинхронный ввод‑вывод приходится использовать почти в каждом проекте. И поэтому меня гораздо больше интересует реализация асинхронного ввода‑вывода с использованием корутин, а не генераторы. Поэтому пришлось разбираться во всем самому.
https://habr.com/ru/articles/798935/
#cpp #programming
👉 @cpp_lib
👍14⚡4❤2
Итак, вы унаследовали старую кодовую базу на C++. Что дальше?
Вы жили своей обычной жизнью, но внезапно, всё поменялось. Возможно, вы устроились в новое место, сменили команду или из вашей компании ушёл сотрудник.
Теперь вы отвечаете за кодовую базу на C++. Она большая, сложная и своеобразная; достаточно слишком долго на неё посмотреть, как она начинает разваливаться разными интересными способами. Иными словами, это легаси.
Но баги всё равно как-то нужно устранять, а ещё добавлять новые фичи. То есть вам нельзя просто закрыть на неё глаза или что ещё лучше, взорвать её динамитом. Она важна для компании. По крайней мере, для тех, кто платит вам зарплату. А значит, важна для вас.
И что делать теперь?
Не волнуйтесь, у меня такое случалось очень много раз и в разных компаниях (кто-то язвительный может спросить: а разве кодовые базы на C++ бывают какими-то другими?), выход есть, он не особо сложен и поможет вам действительно устранять баги, добавлять фичи, а то и когда-нибудь переписать её.
В этой статье я расскажу о том, что оказалось полезным для меня, и о том, чего стоит всячески избегать.
https://habr.com/ru/companies/ruvds/articles/798453/
original https://gaultier.github.io/blog/you_inherited_a_legacy_cpp_codebase_now_what.html
#cpp #programming
👉 @cpp_lib
Вы жили своей обычной жизнью, но внезапно, всё поменялось. Возможно, вы устроились в новое место, сменили команду или из вашей компании ушёл сотрудник.
Теперь вы отвечаете за кодовую базу на C++. Она большая, сложная и своеобразная; достаточно слишком долго на неё посмотреть, как она начинает разваливаться разными интересными способами. Иными словами, это легаси.
Но баги всё равно как-то нужно устранять, а ещё добавлять новые фичи. То есть вам нельзя просто закрыть на неё глаза или что ещё лучше, взорвать её динамитом. Она важна для компании. По крайней мере, для тех, кто платит вам зарплату. А значит, важна для вас.
И что делать теперь?
Не волнуйтесь, у меня такое случалось очень много раз и в разных компаниях (кто-то язвительный может спросить: а разве кодовые базы на C++ бывают какими-то другими?), выход есть, он не особо сложен и поможет вам действительно устранять баги, добавлять фичи, а то и когда-нибудь переписать её.
В этой статье я расскажу о том, что оказалось полезным для меня, и о том, чего стоит всячески избегать.
https://habr.com/ru/companies/ruvds/articles/798453/
original https://gaultier.github.io/blog/you_inherited_a_legacy_cpp_codebase_now_what.html
#cpp #programming
👉 @cpp_lib
👍3🔥3❤1⚡1
Крошечный рендерер или как работает OpenGL: программный рендеринг в 500 строках кода
https://github.com/ssloy/tinyrenderer/wiki
#cpp #programming
👉 @cpp_lib
https://github.com/ssloy/tinyrenderer/wiki
#cpp #programming
👉 @cpp_lib
💯6⚡1👍1