4 июля в 20:00 мск — откройте для себя мир работы с Qt на открытом практическом вебинаре.
На уроке вы освоите:
- основы работы с машиной состояний в Qt: создание состояний, определение переходов и управление сигналами;
- сложные логические условия для эффективных переходов и повышения производительности приложения;
- использование машины состояний для улучшения организации кода и создания более совершенного приложения.
Кому подходит урок:
- программистам, использующим Qt и стремящимся к оптимизации своего кода;
- любознательным разработчикам, желающим погрузиться в мир машин состояний и их применения.
Спикер — ведущий разработчик в одной из крупнейших компаний и опытный преподаватель.
Встречаемся в преддверии старта курса «Разработка прикладного ПО на Qt и ОС «Аврора». Все участники вебинара получат специальную цену на обучение!
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576Please open Telegram to view this post
VIEW IN TELEGRAM
Нативная рефлексия в C++ уже близко
https://habr.com/ru/articles/824840/
https://habr.com/ru/articles/824840/
Хабр
Нативная рефлексия в C++ уже близко
Почему в 2024 году нам приходится писать каст енума к строке вручную, для каждого кастомного типа нужна своя функция логирования, а биндинги к C++ библиотеке требуют кучу повторяющегося кода? Если Вы...
Разбираем как решать задачи на LeetCode
✅ Примеры решений
✅ Пояснения
Выбери своё направление:
1. JavaScript (https://t.me/+u3e0ZNHpk0Q3ODky)
2. Python (https://t.me/+LEcffdCKfw5kYzEy)
3. Java (https://t.me/+K-iYOyU1LnMzYzgy)
4. C# (https://t.me/+4Oz6eoh2o6JmYTAy)
5. C/C++ (https://t.me/+nwY8O9YSx8gwNmMy)
6. Golang (https://t.me/+rC7mEvIcae4wYWQ6)
7. PHP (https://t.me/+Gzwh7btG30pkYzZi)
8. Kotlin (https://t.me/+XewhD58pWzA2NWRi)
9. Swift (https://t.me/+jRimEXd1H2JjZmJi)
✅ Примеры решений
✅ Пояснения
Выбери своё направление:
1. JavaScript (https://t.me/+u3e0ZNHpk0Q3ODky)
2. Python (https://t.me/+LEcffdCKfw5kYzEy)
3. Java (https://t.me/+K-iYOyU1LnMzYzgy)
4. C# (https://t.me/+4Oz6eoh2o6JmYTAy)
5. C/C++ (https://t.me/+nwY8O9YSx8gwNmMy)
6. Golang (https://t.me/+rC7mEvIcae4wYWQ6)
7. PHP (https://t.me/+Gzwh7btG30pkYzZi)
8. Kotlin (https://t.me/+XewhD58pWzA2NWRi)
9. Swift (https://t.me/+jRimEXd1H2JjZmJi)
➡️ Упрощение работы с асинхронными задачами с помощью C++20 coroutines
С выходом C++20 в язык были добавлены корутины, которые значительно упрощают написание асинхронного кода. Корутинный синтаксис делает код более читаемым и управляемым, устраняя необходимость в явных состояниях или сложных коллбэках.
• Корутина simpleCoroutine: Функция simpleCoroutine является корутиной, что обозначается использованием co_return для завершения ее выполнения. Она выводит сообщение на экран и завершает свою работу.
C++ Learning (https://t.me/Learning_pluses) 👩💻
С выходом C++20 в язык были добавлены корутины, которые значительно упрощают написание асинхронного кода. Корутинный синтаксис делает код более читаемым и управляемым, устраняя необходимость в явных состояниях или сложных коллбэках.
• Корутина simpleCoroutine: Функция simpleCoroutine является корутиной, что обозначается использованием co_return для завершения ее выполнения. Она выводит сообщение на экран и завершает свою работу.
C++ Learning (https://t.me/Learning_pluses) 👩💻
➡️ Ассоциативность оператора массива
• A[8] - это то же самое, что и *(A + 8). Так как операция сложения ассоциативна, она может быть переписана как *(8 + A), что синонимично ..... 8[A]
Никто не говорил, что это должно быть обязательно полезно
C++ Learning (https://t.me/Learning_pluses) 👩💻
• A[8] - это то же самое, что и *(A + 8). Так как операция сложения ассоциативна, она может быть переписана как *(8 + A), что синонимично ..... 8[A]
Никто не говорил, что это должно быть обязательно полезно
C++ Learning (https://t.me/Learning_pluses) 👩💻
Опасность устарела: несколько важных нюансов в новых стандартах C++
https://habr.com/ru/companies/kaspersky/articles/822373/
https://habr.com/ru/companies/kaspersky/articles/822373/
Хабр
Опасность устарела: несколько важных нюансов в новых стандартах C++
Undefined behavior (UB) — боль, знакомая каждому разработчику со стажем; эдакий «код Шредингера», когда не знаешь, правильно тот работает или нет. К счастью, стандарты языка С++20/23/26 привнесли...
➡️ Унарный оператор +
• Мало кто знает о возможностях унарного оператора + в C++. Он может использоваться для:
Перевода Enumeration в integer:
+AnEnumeratorValue
• Это делает значение перечислителя типом integer, что полезно при перегрузке операторов для перечислений.
Получения значения переменной:
Унарный + позволяет использовать классы со встроенными статическими инициализаторами без внешнего объявления, создавая временный класс, не зависящий от типа.
• Разложение массива на указатели. Вам необходимо передать два указателя какой-либо функции, однако вы наперед знаете, что ничего из этого не выйдет? В этом случае вам очень пригодится оператор
C++ Learning (https://t.me/Learning_pluses) 👩💻
• Мало кто знает о возможностях унарного оператора + в C++. Он может использоваться для:
Перевода Enumeration в integer:
+AnEnumeratorValue
• Это делает значение перечислителя типом integer, что полезно при перегрузке операторов для перечислений.
Получения значения переменной:
Унарный + позволяет использовать классы со встроенными статическими инициализаторами без внешнего объявления, создавая временный класс, не зависящий от типа.
• Разложение массива на указатели. Вам необходимо передать два указателя какой-либо функции, однако вы наперед знаете, что ничего из этого не выйдет? В этом случае вам очень пригодится оператор
C++ Learning (https://t.me/Learning_pluses) 👩💻
➡️ Злой друг программиста: переопределение ключевых слов
• Переопределение ключевых слов — плохая практика программирования, но это возможно через препроцессор. Это может вводить баги, например, #define true false или #define else.
#define int float
#define float char
• Такой код будет работать, хотя это может быть полезно в некоторых ситуациях. Например, если мы используем большую библиотеку и не хотим публичного наследования, мы можем временно отключить защиту доступа перед подключением заголовков библиотеки, а затем снова включить её.
#define public private
#include "mylibrary.h"
#undef private
• Это позволяет управлять доступом к библиотеке без её изменения, но требует осторожности.
C++ Learning (https://t.me/Learning_pluses) 👩💻
• Переопределение ключевых слов — плохая практика программирования, но это возможно через препроцессор. Это может вводить баги, например, #define true false или #define else.
#define int float
#define float char
• Такой код будет работать, хотя это может быть полезно в некоторых ситуациях. Например, если мы используем большую библиотеку и не хотим публичного наследования, мы можем временно отключить защиту доступа перед подключением заголовков библиотеки, а затем снова включить её.
#define public private
#include "mylibrary.h"
#undef private
• Это позволяет управлять доступом к библиотеке без её изменения, но требует осторожности.
C++ Learning (https://t.me/Learning_pluses) 👩💻
Пройди тест из 20 вопросов и проверь, насколько хорошо nы знаешь язык C++ и готов освоить QT и ОС Аврора .
Сможешь сдать — пройдёшь на продвинутый онлайн-курс "Разработка прикладного ПО на Qt и ОС Аврора" от OTUS.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ruPlease open Telegram to view this post
VIEW IN TELEGRAM
➡️ Размещающий new
• Размещающий new - это альтернативный синтаксис для оператора new, который размещает объект в уже выделенной памяти. Он используется для настройки vtable и вызова конструктора.
• Размещающий new полезен для написания кастомных аллокаторов, оптимизирующих производительность. Он позволяет выделить большой блок памяти и последовательно размещать объекты без пробелов, что уменьшает фрагментацию памяти и снижает накладные расходы.
C++ Learning (https://t.me/Learning_pluses) 👩💻
• Размещающий new - это альтернативный синтаксис для оператора new, который размещает объект в уже выделенной памяти. Он используется для настройки vtable и вызова конструктора.
• Размещающий new полезен для написания кастомных аллокаторов, оптимизирующих производительность. Он позволяет выделить большой блок памяти и последовательно размещать объекты без пробелов, что уменьшает фрагментацию памяти и снижает накладные расходы.
C++ Learning (https://t.me/Learning_pluses) 👩💻
➡️ Квалификаторы ссылки в методах
• C++11 позволяет перегружать методы с использованием квалификатора ссылки, который находится в той же позиции, что и cv-квалификаторы (const и volatile квалификаторы).
• Это влияет на то, какой метод будет вызван для объекта, в зависимости от типа this, – является ли он lvalue или же rvalue.
C++ Learning (https://t.me/Learning_pluses) 👩💻
• C++11 позволяет перегружать методы с использованием квалификатора ссылки, который находится в той же позиции, что и cv-квалификаторы (const и volatile квалификаторы).
• Это влияет на то, какой метод будет вызван для объекта, в зависимости от типа this, – является ли он lvalue или же rvalue.
C++ Learning (https://t.me/Learning_pluses) 👩💻
🚀Успейте за ростом рынка IoT!
👉Узнайте больше об internet of things на бесплатном вебинаре онлайн-курса «IoT Developer» - «Учет энергоресурсов в платформе ThingsBoard»: регистрация (https://meetup.otus.ru/iot-lesson-17-07-2024/?utm_source=telegram&utm_medium=cpm&utm_campaign=iot&utm_term=Learning_pluses_tgin&utm_content=lesson_17-07-2024_usp-engineer_engineer_text_no-headline_aida_long_aibanner_no-banner-hl_black_standart)
На занятии рассмотрим решение учета энергоресурсов (вода, газ, э/э, тепло), познакомимся с реализацией демо проекта на платформе ThingsBoard:
1. Подключение устройств
2. Создание сущностей
3. Разработка цепочек правил
4. Разработка дашборда
🤝Понравится урок — продолжите обучение на курсе по спеццене и даже в рассрочку!
erid: LjN8KXW8x
👉Узнайте больше об internet of things на бесплатном вебинаре онлайн-курса «IoT Developer» - «Учет энергоресурсов в платформе ThingsBoard»: регистрация (https://meetup.otus.ru/iot-lesson-17-07-2024/?utm_source=telegram&utm_medium=cpm&utm_campaign=iot&utm_term=Learning_pluses_tgin&utm_content=lesson_17-07-2024_usp-engineer_engineer_text_no-headline_aida_long_aibanner_no-banner-hl_black_standart)
На занятии рассмотрим решение учета энергоресурсов (вода, газ, э/э, тепло), познакомимся с реализацией демо проекта на платформе ThingsBoard:
1. Подключение устройств
2. Создание сущностей
3. Разработка цепочек правил
4. Разработка дашборда
🤝Понравится урок — продолжите обучение на курсе по спеццене и даже в рассрочку!
erid: LjN8KXW8x
🎯 Готовы открыть для себя мир мобильной разработки на ОС Аврора 5?
16 июля в 20:00 мск присоединяйтесь к нашему открытому уроку и узнайте все секреты!
ОС Аврора 5 — это передовая российская мобильная операционная система, готовая к использованию в самых амбициозных проектах. Хотите узнать, как её покорить? Тогда этот вебинар для вас!
На занятии мы познакомимся с ключевыми особенностями ОС Аврора 5 и погрузимся в её уникальную среду разработки приложений — Аврора IDE. Ознакомимся со структурой и конфигурацией приложений на этой платформе.
Вы увидите наглядную демонстрацию приложения, которое отправляет уведомления в графическую подсистему Lipstick.
Встречаемся в преддверии старта курса «Разработка прикладного ПО на Qt и ОС «Аврора».
Все участники вебинара получат специальную цену на обучение!
➡️ Регистрируйтесь прямо сейчас, чтобы посетить бесплатный урок: https://clck.ru/3BoB4V
16 июля в 20:00 мск присоединяйтесь к нашему открытому уроку и узнайте все секреты!
ОС Аврора 5 — это передовая российская мобильная операционная система, готовая к использованию в самых амбициозных проектах. Хотите узнать, как её покорить? Тогда этот вебинар для вас!
На занятии мы познакомимся с ключевыми особенностями ОС Аврора 5 и погрузимся в её уникальную среду разработки приложений — Аврора IDE. Ознакомимся со структурой и конфигурацией приложений на этой платформе.
Вы увидите наглядную демонстрацию приложения, которое отправляет уведомления в графическую подсистему Lipstick.
Встречаемся в преддверии старта курса «Разработка прикладного ПО на Qt и ОС «Аврора».
Все участники вебинара получат специальную цену на обучение!
➡️ Регистрируйтесь прямо сейчас, чтобы посетить бесплатный урок: https://clck.ru/3BoB4V
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576➡️ Функциональные блоки try
• Функциональные блоки try существуют для ловли исключений выброшенных при выполнении инициализационного списка конструктора.
• Блок вокруг списка инициализации нельзя обернуть обычным блоком try-catch, потому что список существует вне тела функции. Чтобы исправить это, C++ позволяет использовать try-catch блок в качестве тела метода.
• Довольно странный синтаксис, и он может использоваться не только в конструкторах, но и в определении любых функций.
C++ Learning (https://t.me/Learning_pluses) 👩💻
• Функциональные блоки try существуют для ловли исключений выброшенных при выполнении инициализационного списка конструктора.
• Блок вокруг списка инициализации нельзя обернуть обычным блоком try-catch, потому что список существует вне тела функции. Чтобы исправить это, C++ позволяет использовать try-catch блок в качестве тела метода.
• Довольно странный синтаксис, и он может использоваться не только в конструкторах, но и в определении любых функций.
C++ Learning (https://t.me/Learning_pluses) 👩💻
UB или не UB – вот в чём вопрос: как gcc и clang обрабатывают статически известное неопределённое по
https://habr.com/ru/articles/827752/
https://habr.com/ru/articles/827752/
Хабр
UB или не UB – вот в чём вопрос: как gcc и clang обрабатывают статически известное неопределённое поведение
Недавно у нас в команде зашла дискуссия о неопределённом поведении (UB) в C. Напомню для тех, кто не знает: если мы пишем такой код, эффект от выполнения которого (и события в процессе его выполнения)...
➡️ WebKit
Так или иначе, почти все разработчики на разных этапах сталкиваются с необходимостью отображать web – элементы. Чтобы всё выглядело красиво и в коде, и в конечном отображении, а выполнение этой задачи не отнимало слишком много времени и сил, существует библиотека WebKit.
• Некоторые программисты называют WebKit «чёрным ящиком», органично перерабатывающим html, css и JavaScript в полноценные веб-страницы.
🔗 Ссылочка на доку (https://www.webkit.org/)
C++ Learning (https://t.me/Learning_pluses) 👩💻
Так или иначе, почти все разработчики на разных этапах сталкиваются с необходимостью отображать web – элементы. Чтобы всё выглядело красиво и в коде, и в конечном отображении, а выполнение этой задачи не отнимало слишком много времени и сил, существует библиотека WebKit.
• Некоторые программисты называют WebKit «чёрным ящиком», органично перерабатывающим html, css и JavaScript в полноценные веб-страницы.
🔗 Ссылочка на доку (https://www.webkit.org/)
C++ Learning (https://t.me/Learning_pluses) 👩💻
➡️ Awesomium
Awesomium — это библиотека для интеграции браузера (на базе Chromium) в своё приложение. Библиотека имеет 2 режима работы: Offscreen и Windowed.
• В режиме Offscreen отрисовка и работа скриптов на экране не отображается.
• В режиме Windowed средствами библиотеки эффективно выполняется отрисовка в «окне приписки» и обработка активности мыши и клавиатуры.
• Awesomium активно применяется в десятках разных приложений. Описаны случаи интеграции этой библиотеки в 3D игры.
🔗 Ссылочка на доку (https://docs.ultralig.ht/docs/get-started)
C++ Learning (https://t.me/Learning_pluses) 👩💻
Awesomium — это библиотека для интеграции браузера (на базе Chromium) в своё приложение. Библиотека имеет 2 режима работы: Offscreen и Windowed.
• В режиме Offscreen отрисовка и работа скриптов на экране не отображается.
• В режиме Windowed средствами библиотеки эффективно выполняется отрисовка в «окне приписки» и обработка активности мыши и клавиатуры.
• Awesomium активно применяется в десятках разных приложений. Описаны случаи интеграции этой библиотеки в 3D игры.
🔗 Ссылочка на доку (https://docs.ultralig.ht/docs/get-started)
C++ Learning (https://t.me/Learning_pluses) 👩💻
Возможности С++: от стандартных алгоритмов до диапазонов (Ranges)
https://habr.com/ru/companies/simbirsoft/articles/828878/
https://habr.com/ru/companies/simbirsoft/articles/828878/
Хабр
Возможности С++: от стандартных алгоритмов до диапазонов (Ranges)
Привет, Хабр! Меня зовут Николай, я разработчик С++ в SimbirSoft. В предыдущей статье мы с вами рассмотрели применение стандартных алгоритмов в повседневном коде и их преимущества над...