Debugging a Mixed Python and C Language Stack
https://developer.nvidia.com/blog/debugging-mixed-python-and-c-language-stack/
#cpp #programming
👉 @cpp_lib
https://developer.nvidia.com/blog/debugging-mixed-python-and-c-language-stack/
#cpp #programming
👉 @cpp_lib
userver — что мы узнали за полгода в open-source
Прошло больше полугода с момента выхода фреймворка для C++ 🐙 userver в open-source. За это время мы многое узнали, на многом настрадались, а главное — получили много приятных сюрпризов.
И мы решили об этом написать. Рассказ будет полезен тем, кто ведёт или планирует вести свой open-source проект или занимается контрибьютами. Остальным будет интересно почитать про чужое набивание шишек и что вообще open-source даёт проекту.
https://habr.com/ru/companies/yandex/articles/729588/
#cpp #programming
👉 @cpp_lib
Прошло больше полугода с момента выхода фреймворка для C++ 🐙 userver в open-source. За это время мы многое узнали, на многом настрадались, а главное — получили много приятных сюрпризов.
И мы решили об этом написать. Рассказ будет полезен тем, кто ведёт или планирует вести свой open-source проект или занимается контрибьютами. Остальным будет интересно почитать про чужое набивание шишек и что вообще open-source даёт проекту.
https://habr.com/ru/companies/yandex/articles/729588/
#cpp #programming
👉 @cpp_lib
👍3
Разбираемся с использованием неблокируещего ввода-вывода в ОС Linux. Пишем пример сервера на голых системных вызовах
Как обычно пишут сервер, если не особо заботиться производительности? Программа запускается, затем начинает принимать входящие соединения от клиентов и для каждого клиента запускает новый поток, который занимается обслуживанием этого клиента. Если вы используете какой-нибудь, прости господи, Spring или Flask или там Poco, то он что-такое внутри себя и делает - разве что потоки можно переиспользовать, то есть брать из некого пула. Это всё довольно удобно, но не слишком эффективно. Скорее всего, ваши потоки, обслуживающие клиентов, живут недолго и большую часть времени ожидают либо получения данных от клиента, либо отправки их клиенту - то есть ждут возвращения системных вызовов. Создание потока ОС - довольно дорогая операция, как и переключение контекста между потоками ОС. Если вы хотите уметь обслуживать много клиентов эффективно, надо придумать что-то другое. Например, коллбеки. Но это довольно неудобно.
https://habr.com/ru/articles/733948/
#cpp #programming
👉 @cpp_lib
Как обычно пишут сервер, если не особо заботиться производительности? Программа запускается, затем начинает принимать входящие соединения от клиентов и для каждого клиента запускает новый поток, который занимается обслуживанием этого клиента. Если вы используете какой-нибудь, прости господи, Spring или Flask или там Poco, то он что-такое внутри себя и делает - разве что потоки можно переиспользовать, то есть брать из некого пула. Это всё довольно удобно, но не слишком эффективно. Скорее всего, ваши потоки, обслуживающие клиентов, живут недолго и большую часть времени ожидают либо получения данных от клиента, либо отправки их клиенту - то есть ждут возвращения системных вызовов. Создание потока ОС - довольно дорогая операция, как и переключение контекста между потоками ОС. Если вы хотите уметь обслуживать много клиентов эффективно, надо придумать что-то другое. Например, коллбеки. Но это довольно неудобно.
https://habr.com/ru/articles/733948/
#cpp #programming
👉 @cpp_lib
Хабр
Разбираемся с использованием неблокируещего ввода-вывода в ОС Linux. Пишем пример сервера на голых системных вызовах
Как обычно пишут сервер, если не особо заботиться производительности? Программа запускается, затем начинает принимать входящие соединения от клиентов и для каждого клиента запускает новый поток,...
👍5❤1
Media is too big
VIEW IN TELEGRAM
Безопасное копирование, перемещение и уничтожение объектов в современном C++ по правилу «все или ничего»
Какие конструкторы нужны классу C++? Какие он генерирует сам? Как насчет различных операторов присваивания? А деструктор? Как не отстрелить себе ногу и без труда ориентироваться в этих водах?
Это и многое другое мы рассмотрим в этом видео, которое расскажет нам о простом правиле, которому нужно следовать при реализации классов в современном C++, - правиле "все или ничего". Мы погрузимся в причины его существования и посмотрим, как оно облегчает нам жизнь.
источник
#cpp #programming
👉 @cpp_lib
Какие конструкторы нужны классу C++? Какие он генерирует сам? Как насчет различных операторов присваивания? А деструктор? Как не отстрелить себе ногу и без труда ориентироваться в этих водах?
Это и многое другое мы рассмотрим в этом видео, которое расскажет нам о простом правиле, которому нужно следовать при реализации классов в современном C++, - правиле "все или ничего". Мы погрузимся в причины его существования и посмотрим, как оно облегчает нам жизнь.
источник
#cpp #programming
👉 @cpp_lib
👍5🥰1
Better than Singletons: The Service Locator Pattern
https://abstractexpr.com/2023/04/25/better-than-singletons-the-service-locator-pattern/
#cpp #programming
👉 @cpp_lib
https://abstractexpr.com/2023/04/25/better-than-singletons-the-service-locator-pattern/
#cpp #programming
👉 @cpp_lib
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🔥2
Include guards и их оптимизация
В этой статье обсуждается назначение и важность include guards в проектах на C/C++. В ней также рассматриваются оптимизации, которые компиляторы применяют вокруг include guards для улучшения времени сборки, и то, как легко можно непреднамеренно отключить эти оптимизации!
https://includeguardian.io/article/include-guards-and-their-optimizations
#cpp #programming
👉 @cpp_lib
В этой статье обсуждается назначение и важность include guards в проектах на C/C++. В ней также рассматриваются оптимизации, которые компиляторы применяют вокруг include guards для улучшения времени сборки, и то, как легко можно непреднамеренно отключить эти оптимизации!
https://includeguardian.io/article/include-guards-and-their-optimizations
#cpp #programming
👉 @cpp_lib
👍1
Как итерироваться через std::tuple, std::apply и многое другое
https://www.cppstories.com/2022/tuple-iteration-apply/
#cpp #programming
👉 @cpp_lib
https://www.cppstories.com/2022/tuple-iteration-apply/
#cpp #programming
👉 @cpp_lib
👍2
Реализация утилиты cat на C
Программисты часто используют встроенные команды unix для решения задач. Давайте реализуем cat. cat - утилита которая объединяет файлы и выводит их в стандартный вывод.
Цель
Идея довольно проста - принять файл в качестве аргумента, открыть его, занести в буфер по частям и вывести на стандартный вывод. Утилита cat также оснащена различными флагами опций, которые позволяют пользователю манипулировать буфером перед его отправкой на стандартный вывод.
https://habr.com/ru/articles/734254/
#cpp #programming
👉 @cpp_lib
Программисты часто используют встроенные команды unix для решения задач. Давайте реализуем cat. cat - утилита которая объединяет файлы и выводит их в стандартный вывод.
Цель
Идея довольно проста - принять файл в качестве аргумента, открыть его, занести в буфер по частям и вывести на стандартный вывод. Утилита cat также оснащена различными флагами опций, которые позволяют пользователю манипулировать буфером перед его отправкой на стандартный вывод.
https://habr.com/ru/articles/734254/
#cpp #programming
👉 @cpp_lib
👍3
Forwarded from Библиотека Python разработчика | Книги по питону
В Москве заметили необычные баннеры с кодом от Академии Яндекса, в которых точно что-то спрятано, но в коде есть ошибка.
Пытаемся разобрать эту задачку, но пока не выходит. Может, у вас получится?
@BookPython
Пытаемся разобрать эту задачку, но пока не выходит. Может, у вас получится?
@BookPython
👍10👎3😱2
Как отлаживать лямбда-выражения C++ с помощью GDB
В современных версиях языка программирования C++ есть функция, известная как лямбда-выражения. В этой статье показано, как можно отлаживать лямбда-выражения с помощью GDB, GNU Project Debugger. Даже если вас не интересует отладка лямбда-выражений, представленные здесь приемы полезны для многих других ситуаций отладки.
https://developers.redhat.com/articles/2023/05/03/how-debug-c-lambda-expressions-gdb
#cpp #programming
👉 @cpp_lib
В современных версиях языка программирования C++ есть функция, известная как лямбда-выражения. В этой статье показано, как можно отлаживать лямбда-выражения с помощью GDB, GNU Project Debugger. Даже если вас не интересует отладка лямбда-выражений, представленные здесь приемы полезны для многих других ситуаций отладки.
https://developers.redhat.com/articles/2023/05/03/how-debug-c-lambda-expressions-gdb
#cpp #programming
👉 @cpp_lib
Red Hat Developer
How to debug C++ lambda expressions with GDB | Red Hat Developer
Modern versions of the C++ programming language have a feature known as lambda expressions. This article shows how you can debug lambda expressions using GDB, the GNU Project Debugger. Even if you're
👍3
Автоматическая сериализация в C++ для игровых движков
Вы создали свою игру, возможно, сделали движок, и теперь готовы внести последние штрихи. Игроки определенно захотят сохранить свою игру. Это означает сохранение всего текущего состояния игры в файл..... Ничего себе, сколько работы, правда? Теперь каждый враг, персонаж, предмет, поваленное дерево, взорванное здание, локация и т.д. должны быть помещены в файл. А потом нужно снова его прочитать. Какой кошмар.
В этой статье я собираюсь показать вам, как я создал свою собственную библиотеку сериализации. Конечно, есть существующие библиотеки, которые можно использовать, но я, как всегда, даже не смотрю на них, мне интереснее сделать это самому.
https://indiegamedev.net/2022/03/28/automatic-serialization-in-cpp-for-game-engines/
#cpp #programming
👉 @cpp_lib
Вы создали свою игру, возможно, сделали движок, и теперь готовы внести последние штрихи. Игроки определенно захотят сохранить свою игру. Это означает сохранение всего текущего состояния игры в файл..... Ничего себе, сколько работы, правда? Теперь каждый враг, персонаж, предмет, поваленное дерево, взорванное здание, локация и т.д. должны быть помещены в файл. А потом нужно снова его прочитать. Какой кошмар.
В этой статье я собираюсь показать вам, как я создал свою собственную библиотеку сериализации. Конечно, есть существующие библиотеки, которые можно использовать, но я, как всегда, даже не смотрю на них, мне интереснее сделать это самому.
https://indiegamedev.net/2022/03/28/automatic-serialization-in-cpp-for-game-engines/
#cpp #programming
👉 @cpp_lib
👍4🤔1
Practical usage of ref-qualified member function overloading
https://victor-istomin.github.io/c-with-crosses/posts/ref-qualifiers/
#cpp #programming
👉 @cpp_lib
https://victor-istomin.github.io/c-with-crosses/posts/ref-qualifiers/
#cpp #programming
👉 @cpp_lib
victor-istomin.github.io
Practical usage of ref-qualified member function overloading | C with Crosses
Recently, I discovered that std::ranges prohibits the creation of dangling iterators and provides an owning_view to take ownership of temporaries. Digging into the details led me to the ref-qualified memeber functions which can be used to make code safer.
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
STL IN C++
STL In C++
std array C++
Vector In C++
Optimized Way To Use Vector In C++
std::set In C++
Container Inside Container In C++
Multiset In C++
Map In C++
Multimap In C++
Emplace In C++
источник
#cpp #programming
👉 @cpp_lib
STL In C++
std array C++
Vector In C++
Optimized Way To Use Vector In C++
std::set In C++
Container Inside Container In C++
Multiset In C++
Map In C++
Multimap In C++
Emplace In C++
источник
#cpp #programming
👉 @cpp_lib
👍1