🧲 Magnet
Это минималистичный менеджер зависимостей для вашего следующего проекта на C++.
🛠 Установка
Берем репозиторий:
macOS:
▪️ Установите Homebrew
▪️
▪️ ▪️ Xcode:
▪️ ▪️ CLion (Ninja):
Windows:
▪️ Установите CMake
▪️ Запустите нужный установщик в magnet/scripts:
▪️▪️ Visual Studio 17: Дважды щелкните по
▪️▪️ CLion (Ninja): Дважды щелкните по
Linux:
▪️ Установите следующее с помощью менеджера пакетов:
▪️ Запустите программу установки:
Это минималистичный менеджер зависимостей для вашего следующего проекта на C++.
🛠 Установка
Берем репозиторий:
git clone https://github.com/futureblur/magnet.git --recursive
macOS:
▪️ Установите Homebrew
▪️
cd magnet/scripts && chmod +x ./macOSInstaller.sh
▪️ ▪️ Xcode:
./macOSInstaller.sh --xcode
▪️ ▪️ CLion (Ninja):
./macOSInstaller.sh --ninja
Windows:
▪️ Установите CMake
▪️ Запустите нужный установщик в magnet/scripts:
▪️▪️ Visual Studio 17: Дважды щелкните по
WindowsInstaller (Visual Studio 17).bat
▪️▪️ CLion (Ninja): Дважды щелкните по
WindowsInstaller (Ninja).bat
Linux:
▪️ Установите следующее с помощью менеджера пакетов:
cmake, clang, ninja-build
▪️ Запустите программу установки:
cd magnet/scripts && chmod +x ./LinuxInstaller.sh && ./LinuxInstaller.sh
Условие: дается квадратная матрица, необходимо вычислить минимальную сумму вдоль столбца.
На движение вдоль столбца есть ограничение: можно перемещаться на ячейку вниз лишь по диагонали или строго вниз.
Пример:
Ввод: matrix = [[2,1,3],[6,5,4],[7,8,9]]
Вывод: 13
Каковы будут ваши решения?
Please open Telegram to view this post
VIEW IN TELEGRAM
-35% на курс по алгоритмам
🎄 Новый год начинается с подарков, а хороший подарок для себя — новые знания со скидкой 35%!
🌟«Алгоритмы и структуры данных» — 23 390 ₽ (вместо 35 990 ₽)
Полугодовая программа от преподавателей МФТИ и НИУ ВШЭ, которая включает в себя все необходимые знания по алгоритмам для работы.
Самое ценное — это развернутая обратная связь по всем вашим домашним заданиям, а также ссылки на полезные дополнительные материалы.
У вас не будет шансов не усвоить какие-то темы курса👌
🔥 Переходите и активируйте вводные занятия курса — https://proglib.io/w/ff97c30a
🎄 Новый год начинается с подарков, а хороший подарок для себя — новые знания со скидкой 35%!
🌟«Алгоритмы и структуры данных» — 23 390 ₽ (вместо 35 990 ₽)
Полугодовая программа от преподавателей МФТИ и НИУ ВШЭ, которая включает в себя все необходимые знания по алгоритмам для работы.
Самое ценное — это развернутая обратная связь по всем вашим домашним заданиям, а также ссылки на полезные дополнительные материалы.
У вас не будет шансов не усвоить какие-то темы курса👌
🔥 Переходите и активируйте вводные занятия курса — https://proglib.io/w/ff97c30a
Эта штука хорошо оптимизирована для работы на одном GPU.
Использование:
make
./train text_file.txt
./gpu "prompt"
./cpu -t 2 "prompt"
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - wangyi-fudan/wyGPT: Wang Yi's GPT solution
Wang Yi's GPT solution. Contribute to wangyi-fudan/wyGPT development by creating an account on GitHub.
🤔 Очередной #дайджест по С++
📍 Книга «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.