Библиотека C/C++ разработчика | cpp, boost, qt pinned Deleted message
🎯✏️ Реализация #embed для C и C++
Речь пойдет о реализации директивы бинарного включения данных в gcc и clang для C и C++.
Автор опишет способ, которым реализовал #embed для GCC и Clang, и стиль работы, который использовал для ранней версии #embed. Будет использоваться общедоступная версия #embed, которая предложена Clang, в качестве инструмента для отображения одного из используемых методов, позволяющих получить гарантированное ускорение для подмножества случаев, которые имеют значение (например, инициализация массива char/signed char/unsigned char).
Изучить материал
#гайд
Речь пойдет о реализации директивы бинарного включения данных в gcc и clang для C и C++.
Автор опишет способ, которым реализовал #embed для GCC и Clang, и стиль работы, который использовал для ранней версии #embed. Будет использоваться общедоступная версия #embed, которая предложена Clang, в качестве инструмента для отображения одного из используемых методов, позволяющих получить гарантированное ускорение для подмножества случаев, которые имеют значение (например, инициализация массива char/signed char/unsigned char).
Изучить материал
#гайд
👬👬 Параллельное программирование
00:34 — Основы исполнения кода
01:09 — Основы операционных систем
02:01 — Параллельное и конкурентное исполнение кода
02:42 — Примитивы синхронизации
03:45 — Основы архитектуры компьютера
04:06 — Атомики
04:51 — Проблемы параллельного программирования
05:23 — Продвинутые примитивы синхронизации
06:02 — Паттерны параллельного программирования
06:46 — Ввод-вывод
07:15 — Барьеры памяти
08:03 — Продвинутая архитектура компьютера
08:57 — Алгоритмы синхронизации
09:56 — Lock-free структуры данных
10:30 — Wait-free структуры данных
10:45 — Как изучать параллельное программирование
#видео
00:34 — Основы исполнения кода
01:09 — Основы операционных систем
02:01 — Параллельное и конкурентное исполнение кода
02:42 — Примитивы синхронизации
03:45 — Основы архитектуры компьютера
04:06 — Атомики
04:51 — Проблемы параллельного программирования
05:23 — Продвинутые примитивы синхронизации
06:02 — Паттерны параллельного программирования
06:46 — Ввод-вывод
07:15 — Барьеры памяти
08:03 — Продвинутая архитектура компьютера
08:57 — Алгоритмы синхронизации
09:56 — Lock-free структуры данных
10:30 — Wait-free структуры данных
10:45 — Как изучать параллельное программирование
#видео
🤔 очередной #дайджест по С++
🔺 Книга Beginning C++23: From Beginner to Pro — путь программирования на языке C++ с основ и пошаговых примеров, которые помогут вам стать опытным программистом
🔺 Создание своего терминала на C++ и Qt — минималистичный терминал для Linux на основе Qt 5 и qtermwidget5
🔺 Фильтруем логи санитайзеров и valgrind на примере приложения с Qt — решение периодически встречающейся проблемы кода на С и C++ с утечками памяти и неопределенным поведением
🔺 SObjectizer Tales — построению программ на основе акторной модели с помощью SObjectizer
🔺 Осенний митап по стандартам ISO C++ — что вошло в C++26 (pack indexing, linalg, debugging); что вот-вот войдет, но требуют небольших доработок (contracts, reflection)
🔺 Книга Beginning C++23: From Beginner to Pro — путь программирования на языке C++ с основ и пошаговых примеров, которые помогут вам стать опытным программистом
🔺 Создание своего терминала на C++ и Qt — минималистичный терминал для Linux на основе Qt 5 и qtermwidget5
🔺 Фильтруем логи санитайзеров и valgrind на примере приложения с Qt — решение периодически встречающейся проблемы кода на С и C++ с утечками памяти и неопределенным поведением
🔺 SObjectizer Tales — построению программ на основе акторной модели с помощью SObjectizer
🔺 Осенний митап по стандартам ISO C++ — что вошло в C++26 (pack indexing, linalg, debugging); что вот-вот войдет, но требуют небольших доработок (contracts, reflection)
Что из следующего вернет новый элемент в конце контейнера?
Anonymous Quiz
31%
push_back
4%
front
37%
back
27%
pop_back
❗️Мы запускаем серию исследований — и вы можете нам в этом помочь!
«Библиотека программиста» выпустит несколько статей, в которых мы проведем полноценные исследования.
Помогите нам выбрать интересные темы: может быть, вы давно хотели узнать, как изменилась зарплата у тех, кто релоцировался? Или гадаете, сколько лет нужно, чтобы стать миддлом?
Присылайте интересующие вас темы в комментарии — интересные мы возьмем в работу и поделимся с вами результатами💙
«Библиотека программиста» выпустит несколько статей, в которых мы проведем полноценные исследования.
Помогите нам выбрать интересные темы: может быть, вы давно хотели узнать, как изменилась зарплата у тех, кто релоцировался? Или гадаете, сколько лет нужно, чтобы стать миддлом?
Присылайте интересующие вас темы в комментарии — интересные мы возьмем в работу и поделимся с вами результатами
Please open Telegram to view this post
VIEW IN TELEGRAM
Друзья, мы хотим делать для вас самый лучший контент — и для этого нам нужно узнать вас получше.
Пожалуйста, ответьте на несколько вопросов — это поможет нам делать более полезные и интересные посты!
Первая часть опроса 👇
Please open Telegram to view this post
VIEW IN TELEGRAM
Ваш возраст:
Anonymous Poll
10%
Менее 18 лет
33%
18-24 года
27%
25-34 года
18%
35-44 года
8%
45-54 года
1%
55-64 года
2%
65 лет и старше
В каком городе вы живете последние 3 месяца?
Anonymous Poll
24%
Москва
11%
Санкт-Петербург
2%
Краснодар
3%
Нижний Новгород
5%
Минск
2%
Екатеринбург
3%
Киев
1%
Львов
2%
Алматы
48%
Другое
Потоки могут быть на удивление медленными. Например, если вы хотите анализировать числа, то эта процедура C++ близка к наихудшему возможному выбору с точки зрения производительности:
std::stringstream in(mystring);
while(in >> x) {
sum += x;
}
return sum;
Проведем эксперимент — возьмем строки, содержащие символ «%», и создадим новые, в которых символ % заменен на %25, но остальная часть строки остается неизменной.
Простая конструкция строки выглядит следующим образом:
std::string string_escape(const std::string_view file_path) {
std::string escaped_file_path;
for (size_t i = 0; i < file_path.length(); ++i) {
escaped_file_path += file_path[i];
if (file_path[i] == '%')
escaped_file_path += «25»;
}
return escaped_file_path;
}
Оптимизированная версия с использованием потоков выглядит следующим образом:
std::string stream_escape(const std::string_view file_path) {
std::ostringstream escaped_file_path;
for (size_t i = 0; i < file_path.length(); ++i) {
escaped_file_path << file_path[i];
if (file_path[i] == '%')
escaped_file_path << «25»;
}
return escaped_file_path.str();
}
Продолжить изучение
#гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
🚶♂️🚏 Embox отправляется на Vostok
Эта статья — своеобразный (расширенный) анонс того, что Embox перенесен на микроконтроллеры еще одного производителя микроэлектроники в РФ. Речь идет о платформе Vostok базирующейся на микроконтроллерах ГК «Элемент».
«Восток» базируется на идее построения экосистемы вокруг отечественной электроники через предоставление пользователям готовых программно-аппаратных решений. Причем эти решения ориентированы на очень широкий класс пользователей: от обучения школьников робототехнике (уже разработан аналог ARDUINO) и до промышленной автоматики и роботов.
Embox:
🔹 открытый проект,
🔹 позволяет пользоваться экосистемой Linux,
🔹 позволяет привычно разрабатывать,
🔹 позволяет получить оптимизированную под конкретные цели систему,
🔹 имеет поддержку в РФ.
Читать статью
#почитать
Эта статья — своеобразный (расширенный) анонс того, что Embox перенесен на микроконтроллеры еще одного производителя микроэлектроники в РФ. Речь идет о платформе Vostok базирующейся на микроконтроллерах ГК «Элемент».
«Восток» базируется на идее построения экосистемы вокруг отечественной электроники через предоставление пользователям готовых программно-аппаратных решений. Причем эти решения ориентированы на очень широкий класс пользователей: от обучения школьников робототехнике (уже разработан аналог ARDUINO) и до промышленной автоматики и роботов.
Embox:
🔹 открытый проект,
🔹 позволяет пользоваться экосистемой Linux,
🔹 позволяет привычно разрабатывать,
🔹 позволяет получить оптимизированную под конкретные цели систему,
🔹 имеет поддержку в РФ.
Читать статью
#почитать
🚏🐕 Вышел начальный релиз ядра БМПОС (Базовая Модульная Платформа Операционных Систем) 0.1.231
Вышел начальный релиз ядра БМПОС (Базовая Модульная Платформа Операционных Систем) 0.1.231 в рамках разработки обучающей платформы для системных программистов. Открытый проект БМПОС задуман и создаётся сообществом как обучающее пособие по разработке операционных систем с развитой теоретической и практической базой. Это отечественное программное обеспечение, созданное при поддержке Синапс ОС на языке программирования C.
Разработка проекта нацелена на получение обучающимися знаний по минимально необходимой кодовой базе, формирование навыков постройки простой и понятной архитектуры и максимального упрощения кода.
БМПОС имеет небольшой размер бинарных файлов, что способствует достижению высокой надёжности и упрощению процессов сборки и тестирования.
Проект БМПОС не ставит перед собой цели использования вне виртуальных машин. Там поддерживается только модульная сборка со встраиваемыми на этапе компиляции модулями. В феврале 2024 года планируется полноценный релиз платформы БМПОС с полным набором драйверов, включая гостевые расширения QEMU и VirtualBox.
Продолжение здесь
#новость
Вышел начальный релиз ядра БМПОС (Базовая Модульная Платформа Операционных Систем) 0.1.231 в рамках разработки обучающей платформы для системных программистов. Открытый проект БМПОС задуман и создаётся сообществом как обучающее пособие по разработке операционных систем с развитой теоретической и практической базой. Это отечественное программное обеспечение, созданное при поддержке Синапс ОС на языке программирования C.
Разработка проекта нацелена на получение обучающимися знаний по минимально необходимой кодовой базе, формирование навыков постройки простой и понятной архитектуры и максимального упрощения кода.
БМПОС имеет небольшой размер бинарных файлов, что способствует достижению высокой надёжности и упрощению процессов сборки и тестирования.
Проект БМПОС не ставит перед собой цели использования вне виртуальных машин. Там поддерживается только модульная сборка со встраиваемыми на этапе компиляции модулями. В феврале 2024 года планируется полноценный релиз платформы БМПОС с полным набором драйверов, включая гостевые расширения QEMU и VirtualBox.
Продолжение здесь
#новость
Библиотека C/C++ разработчика | cpp, boost, qt
Продолжаем наш опрос — вторая часть👇
В какой стране вы живете последние 3 месяца?
Anonymous Poll
67%
Россия
6%
Украина
6%
Беларусь
2%
Казахстан
1%
Польша
1%
Кыргызстан
2%
Узбекистан
1%
США
1%
Грузия
12%
Другое
Ваш доход в месяц после налогов:
Anonymous Poll
28%
до $500
9%
от $501 до $800
11%
от $801 до $1100
18%
от $1101 до $2000
12%
от $2001 до $3000
7%
от $3001 до $4000
5%
от $4001 до $5001
2%
от $5001 до $6000
8%
от $6001
Какой у вас коммерческий опыт работы в IT?
Anonymous Poll
26%
от 6 лет
15%
от 3 до 6 лет включительно
16%
от 1 до 3 лет включительно
10%
до 1 года
34%
нет опыта
#вопросы_с_собеседования
Расскажите о системах автоматизации билд-процесса
Системы автоматизации билд-процесса — это инструменты, которые автоматизируют процесс создания программного обеспечения, включая компиляцию исходного кода в бинарный код, упаковку бинарного кода и запуск автоматических тестов². Эти системы позволяют ускорить и упростить процесс сборки программного обеспечения, а также повысить его надежность и воспроизводимость.
Существует множество систем автоматизации билд-процесса, которые отличаются по функциональности, поддерживаемым языкам программирования и платформам. Некоторые из популярных систем автоматизации билд-процесса:
Make: классический инструмент для автоматизации сборки программного обеспечения, использующий Makefile для описания зависимостей между файлами и правил сборки.
CMake: кроссплатформенная система для автоматизации сборки программного обеспечения, которая генерирует файлы сборки для различных систем сборки, таких как Make, Ninja и Visual Studio.
MSBuild: система сборки от Microsoft, используемая в Visual Studio для сборки проектов на языках C++, C# и других.
Ant: система сборки для Java, использующая XML-файлы для описания зависимостей и правил сборки.
Maven: система сборки и управления зависимостями для Java, которая автоматически загружает необходимые библиотеки и плагины.
Gradle: гибкая система сборки для Java, Groovy и Kotlin, которая поддерживает скрипты на Groovy и Kotlin для описания процесса сборки.
Расскажите о системах автоматизации билд-процесса
❤️🙏 Путь к мечте: как инвалидность не помешала стать разработчиком и продолжить борьбу за здоровье
Автор «Библиотеки программиста» Станислав Герасимов, инвалид с детства, делится жизненной историей становления профессиональным разработчиком.
В жизни Стаса было всё, но, возможно, именно путь к мечте помог справиться со всеми жизненными трудностями и добиться поставленной цели.
🔗 Читать статью
🔗 Зеркало
Автор «Библиотеки программиста» Станислав Герасимов, инвалид с детства, делится жизненной историей становления профессиональным разработчиком.
В жизни Стаса было всё, но, возможно, именно путь к мечте помог справиться со всеми жизненными трудностями и добиться поставленной цели.
🔗 Читать статью
🔗 Зеркало
Библиотека C/C++ разработчика | cpp, boost, qt
Продолжаем наш опрос — вторая часть👇
Продолжаем наш опрос — последняя, третья часть👇