🤔 Очередной #дайджест по С++
📍 Книга «C Programming For Dummies» — автор учит всему необходимому для старта карьеры разработчика, использующего Си
📍 Тестовое в Firefly Studios или игра за час — история о позиции AI программера в новую старую игру
📍 ESPspectrum прошивка — автор расскажет об ОС ESPspectrum и том, как ее применять
📍 Как избежать висячих ссылок, используя lifetime extension — погрузитесь в теорию стандарта С++ и выясните, что привычная всем функциональность lifetime extension иногда не решает задачу
📍 Как я создавал автокликер для приложения «ДругВокруг» — пример автоматизации процесса перебора телефонных номеров из определённого списка или диапазона
📍 Книга «C Programming For Dummies» — автор учит всему необходимому для старта карьеры разработчика, использующего Си
📍 Тестовое в Firefly Studios или игра за час — история о позиции AI программера в новую старую игру
📍 ESPspectrum прошивка — автор расскажет об ОС ESPspectrum и том, как ее применять
📍 Как избежать висячих ссылок, используя lifetime extension — погрузитесь в теорию стандарта С++ и выясните, что привычная всем функциональность lifetime extension иногда не решает задачу
📍 Как я создавал автокликер для приложения «ДругВокруг» — пример автоматизации процесса перебора телефонных номеров из определённого списка или диапазона
ecs-cpp
Система компонентов сущностей (ECS) — это шаблон проектирования, который используется для отделения данных от логики. Это способ сделать код более гибким и поддерживаемым.
Рассматривайте его как контейнер, содержащий сущности, и каждая сущность может иметь один или несколько компонентов. Компонент — это структура данных, которая содержит данные, а система — это функция, которая работает с сущностями, имеющими определенный набор компонентов. Систему можно рассматривать как функцию, которая принимает набор компонентов и выполняет операцию над указанными компонентами. Контейнер ECS отвечает за отслеживание того, какие объекты имеют какие компоненты и какие системы должны запускаться на каких объектах.
#обзор
Система компонентов сущностей (ECS) — это шаблон проектирования, который используется для отделения данных от логики. Это способ сделать код более гибким и поддерживаемым.
Рассматривайте его как контейнер, содержащий сущности, и каждая сущность может иметь один или несколько компонентов. Компонент — это структура данных, которая содержит данные, а система — это функция, которая работает с сущностями, имеющими определенный набор компонентов. Систему можно рассматривать как функцию, которая принимает набор компонентов и выполняет операцию над указанными компонентами. Контейнер ECS отвечает за отслеживание того, какие объекты имеют какие компоненты и какие системы должны запускаться на каких объектах.
#обзор
📚 Introduction to C & GUI Programming (2019)
✍️ Автор: Саймон Лонг
📃 Страниц: 156
Популярный язык программирования Cи используется в совершенно разных областях — от крошечных микроконтроллеров, используемых в тостерах и часах, до законченных операционных систем. Первая половина этой книги представляет собой введение в Cи и охватывает основы написания простых программ с помощью командной строки. Во второй половине книги показано, как использовать набор инструментов пользовательского интерфейса GTK с Cи для создания многофункциональных приложений с графическим интерфейсом, которые можно запускать на компьютере.
Что внутри:
🔸 Создавайте простые программы командной строки на C
🔸 Управляйте потоком с помощью условий и циклов
🔸 Обрабатывайте переменные, строки и файлы
🔸 Разрабатывайте приложения с GUI
🔸 Обрабатывайте пользовательский ввод с помощью кнопок и меню
🔸 Используйте расширенные функции UI, такие как хранилища данных и диалоги
✍️ Автор: Саймон Лонг
📃 Страниц: 156
Популярный язык программирования Cи используется в совершенно разных областях — от крошечных микроконтроллеров, используемых в тостерах и часах, до законченных операционных систем. Первая половина этой книги представляет собой введение в Cи и охватывает основы написания простых программ с помощью командной строки. Во второй половине книги показано, как использовать набор инструментов пользовательского интерфейса GTK с Cи для создания многофункциональных приложений с графическим интерфейсом, которые можно запускать на компьютере.
Что внутри:
🔸 Создавайте простые программы командной строки на C
🔸 Управляйте потоком с помощью условий и циклов
🔸 Обрабатывайте переменные, строки и файлы
🔸 Разрабатывайте приложения с GUI
🔸 Обрабатывайте пользовательский ввод с помощью кнопок и меню
🔸 Используйте расширенные функции UI, такие как хранилища данных и диалоги
Темы докладов:
Смотреть
#видео
Please open Telegram to view this post
VIEW IN TELEGRAM
🤓🧑🍳 Интересные бенчмарки для многопоточности, асинхронности и корутинов C++20
Это набор производительных «words counters» (не навороченных, просто разделяющих «слова» пробелами), реализованных с использованием современных функций C++20, таких как span, string_view, filesystem, ranges и других.
Там, где это уместно, используются параллельные хэш-карты и другие зависимости, такие как контейнеры Abseil, Boost.Feature или Asio с корутинами.
#почитать
Это набор производительных «words counters» (не навороченных, просто разделяющих «слова» пробелами), реализованных с использованием современных функций C++20, таких как span, string_view, filesystem, ranges и других.
Там, где это уместно, используются параллельные хэш-карты и другие зависимости, такие как контейнеры Abseil, Boost.Feature или Asio с корутинами.
#почитать
🧑💻 Особенности работы в айти: результаты опроса подписчиков
В декабре мы провели среди вас опрос, изучили результаты и сделали аналитическую статью на vc.ru.
Вот некоторые выводы:
🧔♂️ В основном наша аудитория состоит из мужчин — 92,1% опрошенных. Женщин, соответственно, всего 7,9%.
🐍 В ТОП-10 специальностей входят питонисты — их 12,4%. Дата-инженерами или дата-сайентистами себя назвали 3.7% респондентов.
👨🎓 25% аудитории — самоучки, у которых нет профильного образования, и они не заканчивали никаких платных курсов.
💲 У разработчиков с опытом менее года преобладают зарплаты до 90 000 рублей (88%). Если опыта 1-3 года, то доля получающих 150 000+ увеличивается до 53,6%.
💰 Опытные и образованные Python-разработчики (15,44%) также входят в шестёрку самых высокооплачиваемых специалистов.
🔗 Полный отчёт можно прочесть по этой ссылке
💬 Пишите, какие ещё подобные материалы вам было бы интересно почитать
В декабре мы провели среди вас опрос, изучили результаты и сделали аналитическую статью на vc.ru.
Вот некоторые выводы:
🧔♂️ В основном наша аудитория состоит из мужчин — 92,1% опрошенных. Женщин, соответственно, всего 7,9%.
🐍 В ТОП-10 специальностей входят питонисты — их 12,4%. Дата-инженерами или дата-сайентистами себя назвали 3.7% респондентов.
👨🎓 25% аудитории — самоучки, у которых нет профильного образования, и они не заканчивали никаких платных курсов.
💲 У разработчиков с опытом менее года преобладают зарплаты до 90 000 рублей (88%). Если опыта 1-3 года, то доля получающих 150 000+ увеличивается до 53,6%.
💰 Опытные и образованные Python-разработчики (15,44%) также входят в шестёрку самых высокооплачиваемых специалистов.
🔗 Полный отчёт можно прочесть по этой ссылке
💬 Пишите, какие ещё подобные материалы вам было бы интересно почитать
🤔 Очередной #дайджест по С++
▫️ Каким root сертификатам следует доверять? — узнайте с помощью CertInfo
▫️ Разработка под Symbian: SDK — речь пойдет о платформе Series 60, позже переименованной в S^1
▫️ Шесть невозможных вещей — как только вы узнаете свои пределы, вы сможем работать в их рамках, создавая решения, а не проблемы
▫️ Практика языка C — хеш-таблицы, многомодульные программы и структуры данных
▫️ Выполняем сторонние программы на микроконтроллерах с Гарвардской архитектурой — как загружать программы без знания ABI
▫️ Каким root сертификатам следует доверять? — узнайте с помощью CertInfo
▫️ Разработка под Symbian: SDK — речь пойдет о платформе Series 60, позже переименованной в S^1
▫️ Шесть невозможных вещей — как только вы узнаете свои пределы, вы сможем работать в их рамках, создавая решения, а не проблемы
▫️ Практика языка C — хеш-таблицы, многомодульные программы и структуры данных
▫️ Выполняем сторонние программы на микроконтроллерах с Гарвардской архитектурой — как загружать программы без знания ABI
Задача : на вход подается номер столбца, необходимо конвертировать его в буквенное представление, которое будет использоваться в таблице-Excel.
Пример:
Ввод:
Вывод: "
Ввод:
Вывод: "
Пишите свое решение в комментариях👇
Решение будет в следующем посте через 30мин
Пример:
Ввод:
columnNumber
= 1Вывод: "
A
"Ввод:
columnNumber
= 28Вывод: "
AB
"Пишите свое решение в комментариях
Решение будет в следующем посте через 30мин
Please open Telegram to view this post
VIEW IN TELEGRAM
Сколько раз будут выполняться циклы внутри программы?
Ответ:
в первом случае цикл не выполнится никогда, а во втором случае будет выполняться бесконечно.
Объяснение:
В первом цикле условие прекращения цикла имеет тип беззнакового char, значит, у нас присвоение n 256 вызовет переполнение и n станет равным 0. Цикл превратится в for (unsigned char i = 0; i < 0; ++i), а, значит, условие цикла не выполняется, и мы даже не войдём в тело цикла.
Во втором цикле другая ситуация, он превращается в for (unsigned char i = 0; i < 256; ++i), и так как i не может быть больше, чем 255, то условие цикла будет выполняться всегда.
Ответ:
в первом случае цикл не выполнится никогда, а во втором случае будет выполняться бесконечно.
Объяснение:
В первом цикле условие прекращения цикла имеет тип беззнакового char, значит, у нас присвоение n 256 вызовет переполнение и n станет равным 0. Цикл превратится в for (unsigned char i = 0; i < 0; ++i), а, значит, условие цикла не выполняется, и мы даже не войдём в тело цикла.
Во втором цикле другая ситуация, он превращается в for (unsigned char i = 0; i < 256; ++i), и так как i не может быть больше, чем 255, то условие цикла будет выполняться всегда.
Ключевое слово requires
Ключевое слово requires используется в контексте концепций (concepts) для определения требований, которые тип должен удовлетворять. Концепции представляют собой инструмент в C++, введенный в стандарте C++20, который позволяет более точно указывать ограничения на типы данных, которые могут использоваться в шаблонах.
В примере на картинке Sortable — это концепция, описывающая типы, для которых определены операторы сравнения (»<» и «>»). Функция sortAndPrint принимает два аргумента типа T, удовлетворяющего концепции Sortable, и сравнивает их.
Использование requires в данном контексте позволяет более явно указать ограничения на типы данных, которые могут использоваться в шаблонах и функциях, делая код более читаемым и безопасным.
Ключевое слово requires используется в контексте концепций (concepts) для определения требований, которые тип должен удовлетворять. Концепции представляют собой инструмент в C++, введенный в стандарте C++20, который позволяет более точно указывать ограничения на типы данных, которые могут использоваться в шаблонах.
В примере на картинке Sortable — это концепция, описывающая типы, для которых определены операторы сравнения (»<» и «>»). Функция sortAndPrint принимает два аргумента типа T, удовлетворяющего концепции Sortable, и сравнивает их.
Использование requires в данном контексте позволяет более явно указать ограничения на типы данных, которые могут использоваться в шаблонах и функциях, делая код более читаемым и безопасным.
AI Toolkit — это библиотека C++ только для заголовков, которая предоставляет инструменты для создания ИИ для NPC для игр.
Она предоставляет:
💩 Система конечных автоматов
💩 Дерево поведения
💩 Утилитарный ИИ
💩 Планирование действий с ориентацией на цель
Добавьте папку include этого репозитория в свои пути или добавьте ее как подмодуль:
Она предоставляет:
Добавьте папку include этого репозитория в свои пути или добавьте ее как подмодуль:
$ git submodule add https://github.com/linkdd/aitoolkit.git
$ g++ -std=c++23 -Iaiotoolkit/include main.cpp -o mygame
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - linkdd/aitoolkit: Give a brain to your game's NPCs
Give a brain to your game's NPCs. Contribute to linkdd/aitoolkit development by creating an account on GitHub.
#вопросы_с_собеседования
Предполагая, что buf является валидным указателем, в чем проблема в приведенном на картинке коде? Каким был бы альтернативный способ реализации этого, который позволил бы избежать этой проблемы?
Проблема в коде заключается в том, что --sz >= 0 всегда будет истинным, поэтому вы никогда не выйдете из цикла while (поэтому вы, вероятно, в конечном итоге испортите память или вызовете какое-то нарушение памяти или какой-либо другой программный сбой, в зависимости от того, что вы делаете внутри цикла). Причина, по которой --sz >= 0 всегда будет истинной, заключается в том, что тип sz равен size_t. size_t на самом деле просто псевдоним одного из основных беззнаковых целочисленных типов. Следовательно, поскольку sz не имеет знака, оно никогда не может быть меньше нуля (поэтому условие никогда не может быть ложным). Одним из примеров альтернативной реализации, позволяющей избежать этой проблемы, может быть использование цикла for следующим образом:
for (size_t i = 0; i < sz; i++)
Предполагая, что buf является валидным указателем, в чем проблема в приведенном на картинке коде? Каким был бы альтернативный способ реализации этого, который позволил бы избежать этой проблемы?
Проблема в коде заключается в том, что --sz >= 0 всегда будет истинным, поэтому вы никогда не выйдете из цикла while (поэтому вы, вероятно, в конечном итоге испортите память или вызовете какое-то нарушение памяти или какой-либо другой программный сбой, в зависимости от того, что вы делаете внутри цикла). Причина, по которой --sz >= 0 всегда будет истинной, заключается в том, что тип sz равен size_t. size_t на самом деле просто псевдоним одного из основных беззнаковых целочисленных типов. Следовательно, поскольку sz не имеет знака, оно никогда не может быть меньше нуля (поэтому условие никогда не может быть ложным). Одним из примеров альтернативной реализации, позволяющей избежать этой проблемы, может быть использование цикла for следующим образом:
for (size_t i = 0; i < sz; i++)
Самые полезные каналы для программистов в одной подборке!
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
#️⃣C#
Библиотека шарписта
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие профильные каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
💼Каналы с вакансиями
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
🤖Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
#️⃣C#
Библиотека шарписта
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие профильные каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
💼Каналы с вакансиями
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
🤖Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
🤔 Очередной #дайджест по С++
⭕ Nebula engine — современный опенсорсный игровой движок с бесплатным использованием
⭕ Неклассические контейнеры в C++ — в статье автор рассматривает последовательные контейнеры
⭕ Стремление к лучшему коду на C++ — основы анализа потоков данных
⭕ CMake Tutorial — классный курс по CMake от основ до CTest и CDash
⭕ Дорожная карта навыков разработчика на C++ — с помощью карты автор покажет, какие навыки и знания нужны разработчику на C++
⭕ Nebula engine — современный опенсорсный игровой движок с бесплатным использованием
⭕ Неклассические контейнеры в C++ — в статье автор рассматривает последовательные контейнеры
⭕ Стремление к лучшему коду на C++ — основы анализа потоков данных
⭕ CMake Tutorial — классный курс по CMake от основ до CTest и CDash
⭕ Дорожная карта навыков разработчика на C++ — с помощью карты автор покажет, какие навыки и знания нужны разработчику на C++
🍊Подборка лучших статей «Библиотеки программиста» за декабрь: сохраняй в заметки, чтобы не пропустить #самыйсок
🏦⚠️ Борьба с ошибками разработки ПО в финтехе
🔟🏢 ТОП-10 российских IT-работодателей
📁💡Где программисту взять идеи для портфолио
🧠🧩 Зачем айтишнику психолог?
🏆 Самые популярные языки программирования 2023
👨🎓 14 бесплатных ресурсов, которые пригодятся каждому разработчику
⚙️✅📕 Ответы на вопросы для самопроверки из книги «Тестирование Дот Ком» Романа Савина
❤️🙏 Путь к мечте: как инвалидность не помешала стать разработчиком и продолжить борьбу за здоровье
✍️ Почему отсутствие технической документации убьёт ваш проект?
🏦⚠️ Борьба с ошибками разработки ПО в финтехе
🔟🏢 ТОП-10 российских IT-работодателей
📁💡Где программисту взять идеи для портфолио
🧠🧩 Зачем айтишнику психолог?
🏆 Самые популярные языки программирования 2023
👨🎓 14 бесплатных ресурсов, которые пригодятся каждому разработчику
⚙️✅📕 Ответы на вопросы для самопроверки из книги «Тестирование Дот Ком» Романа Савина
❤️🙏 Путь к мечте: как инвалидность не помешала стать разработчиком и продолжить борьбу за здоровье
✍️ Почему отсутствие технической документации убьёт ваш проект?