Полезные материалы по всему, что может быть полезно плюсовику/сишнику.
Как построить мост между JavaScript и C++ через WASM, или гайд для самых маленьких
Всем привет. Сегодня я хочу поговорить об использовании WASM с C++ и разберу, как взаимодействовать с этим всем делом через JavaScript.
Когда я начинал изучение технологии WASM, которая является довольно интересной и обсуждаемой темой в последние несколько лет. Почти сразу я столкнулся со значительным разрывом в уровнях туториалов (материалы либо очень простые и не имеют смысла, либо для совсем продвинутого уровня) и скудной документацией.
То есть, вхождение новичков может быть затруднено, и поэтому я решил создать гайд, который рассчитан на изучение темы с нуля и до среднего уровня.
В нём я постарался заполнить те информационные дыры, с которыми столкнулся сам во время изучения. Я собрал знания и хочу передать им вам, чтобы вы могли немного быстрее влиться в данную, не самую простую, тему.
В рамках данной статьи не будет подниматься тема производительности и некоторых лучших реализаций, от читателя требуется минимальное понимание JavaScript или TypeScript, и C++ кода.
https://habr.com/ru/articles/837692/
#cpp #programming
👉 @cpp_lib
Работа с кодом на C++ в Swift
Меня зовут Иван Мясников, я CTO проекта «Виртуальный ассистент» в МТС Диджитал. Встраивание кода С++ в приложения для iOS — достаточно трудная задача. Еще сложнее собрать SDK для дальнейшей поставки в сторонние приложения, используя логику на С++ совместно со Swift. В этой статье я расскажу, как мы создавали такой SDK так, чтобы он встраивался в любое приложение без танцев с целевой архитектурой процессора.
Встраивание C++ в Swift позволяет использовать один код на разных платформах и ускорить некоторые задачи, где Swift не хватает быстродействия. У нас есть библиотека на C++ для работы с ML на Tensorflow Lite. И эту библиотеку мы хотели встроить на Android, iOS, Linux под различные платформы и архитектуры процессора без переписывания логики оттуда на Kotlin, Swift или что-нибудь еще. В этой статье я расскажу, как мы заставили код на C++ работать в iOS и какие тут есть тонкости и ограничения. Я ориентировался на читателей, у которых может не быть экспертизы в iOS или в C++, и старался не погружаться в глубокие дебри. Этот материал познакомит с решениями, к которым мы пришли экспериментально, подбирая подходящие варианты под нашу задачу.
https://habr.com/ru/companies/ru_mts/articles/838926/
#cpp #programming
👉 @cpp_lib
В крайности – Fold-выражения
Выражения сложения существуют в C++ начиная с C++17 и существенно влияют на то, как мы обращаемся с переменными шаблонами. Когда-то давно я писал о выражениях сложения в рамках серии о метапрограммировании, но сегодня мы рассмотрим крайние случаи использования выражений сложения.
Прежде чем мы начнем, сделаем важную оговорку: В этой статье примеры кода показывают использование вариативных шаблонов с аргументами, передаваемыми по значению, без их пересылки. Это сделано для того, чтобы упростить их и сосредоточиться на идее, лежащей в основе примеров.
https://cppsenioreas.wordpress.com/2023/05/22/into-the-extreme-fold-expressions/
#cpp #programming
👉 @cpp_lib
🔖Mastering 3D Game Engine Development with C++: Perfect for Beginners: All You Need is a Passion for Game Development and a Love for Coding!
Автор: Andrew M. Jones (2024)
Устали от предустановленных ограничений? Эта книга познакомит вас с возможностями C++, "выбором чемпиона" для программистов, для проектирования и создания самой основы игр вашей мечты - захватывающих трехмерных миров, захватывающих приключений и эпических сражений. Никакого предварительного опыта работы с движком не требуется! Просто привнесите в себя свою страсть к разработке игр и дух программирования.
#cpp #programming
👉 @cpp_lib
Game Engine
00.🕹️ Game Engine hardCORE серии. Promo
02.🕹️ Сборка C++ проектов. Препроцессинг.
03.🕹️ Сборка C++ проектов. Компиляция. Ассемблер. Теория.
04.🕹️ Сборка C++ проектов. Оптимизации компилятора. Inline, constexpr, alignment.
05.🕹️ Сборка C++ проектов. Linker. Forward declaration.
06.🕹️ Сборка C++ проектов. Static/dynamic libraries. PCH. Unity (JUMBO) build.
источник
#cpp #programming #ue5 #unrealengine
👉 @cpp_lib
Простая в реализации arena-friendly hash map
https://nullprogram.com/blog/2023/09/30/
#cpp #programming
👉 @cpp_lib
Дорожная карта навыков разработчика на C++
В этой статье мы с помощью карты покажем, какие навыки и знания нужны разработчику на C++. Естественно, разбирать путь развития «плюсистов» будем на собственном примере — тем более что у нас в «Лаборатории Касперского» много очень разных проектов с отличающимися задачами. Однако наша карта по большей части универсальна и будет полезна всем, кто хочет развиваться в разработке на C++.
https://habr.com/ru/specials/726724/
#cpp #programming
👉 @cpp_lib
«Range-based for»: что интересного лежит на поверхности
Новый синтаксис для циклов for в C++ появился уже давно - более десяти лет назад в стандарте C++11. Идея, скрывающаяся за этим синтаксисом, не является сколь-нибудь запутанной, и практически все, кто интересуются новыми свойствами языка, быстро разобрались с тем, как этим синтаксисом пользоваться и, что важнее, как создавать свои типы, совместимые с синтаксисом range-based for. Однако, как мне кажется, именно в вопросах взаимодействия с пользовательскими типами спецификация range-based for содержит несколько интересных деталей, лежащих практически на поверхности, которые остаются незамеченными просто потому, что идиоматические подходы прекрасно обходятся и без них. Возможно, кому-то будет интересно взглянуть на них повнимательнее.
https://habr.com/ru/articles/835130/
#cpp #programming
👉 @cpp_lib
Подборка Telegram каналов для программистов
Системное администрирование 📌
/channel/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
/channel/sysadminof Книги для админов, полезные материалы
/channel/i_odmin Все для системного администратора
/channel/i_odmin_book Библиотека Системного Администратора
/channel/i_odmin_chat Чат системных администраторов
/channel/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
/channel/sysadminoff Новости Линукс Linux
/channel/tikon_1 Новости высоких технологий, науки и техники💡
/channel/mir_teh Мир технологий (Technology World)
/channel/rust_lib Полезный контент по программированию на Rust
/channel/golang_lib Библиотека Go (Golang) разработчика
/channel/itmozg Программисты, дизайнеры, новости из мира IT.
/channel/phis_mat Обучающие видео, книги по Физике и Математике
/channel/php_lib Библиотека PHP программиста 👨🏼💻👩💻
/channel/nodejs_lib Подборки по Node js и все что с ним связано
/channel/ruby_lib Библиотека Ruby программиста
1C разработка 📌
/channel/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
Программирование C++📌
/channel/cpp_lib Библиотека C/C++ разработчика
/channel/cpp_knigi Книги для программистов C/C++
/channel/cpp_geek Учим C/C++ на примерах
Программирование Python 📌
/channel/pythonofff Python академия. Учи Python быстро и легко🐍
/channel/BookPython Библиотека Python разработчика
/channel/python_real Python подборки на русском и английском
/channel/python_360 Книги по Python Rus
Java разработка 📌
/channel/BookJava Библиотека Java разработчика
/channel/java_360 Книги по Java Rus
/channel/java_geek Учим Java на примерах
GitHub Сообщество 📌
/channel/Githublib Интересное из GitHub
Базы данных (Data Base) 📌
/channel/database_info Все про базы данных
Мобильная разработка: iOS, Android 📌
/channel/developer_mobila Мобильная разработка
/channel/kotlin_lib Подборки полезного материала по Kotlin
Фронтенд разработка 📌
/channel/frontend_1 Подборки для frontend разработчиков
/channel/frontend_sovet Frontend советы, примеры и практика!
/channel/React_lib Подборки по React js и все что с ним связано
Разработка игр 📌
/channel/game_devv Все о разработке игр
Вакансии 📌
/channel/sysadmin_rabota Системный Администратор
/channel/progjob Вакансии в IT
Чат программистов📌
/channel/developers_ru
Библиотеки 📌
/channel/book_for_dev Книги для программистов Rus
/channel/programmist_of Книги по программированию
/channel/proglb Библиотека программиста
/channel/bfbook Книги для программистов
/channel/books_reserv Книги для программистов
БигДата, машинное обучение 📌
/channel/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning
Программирование 📌
/channel/bookflow Лекции, видеоуроки, доклады с IT конференций
/channel/coddy_academy Полезные советы по программированию
QA, тестирование 📌
/channel/testlab_qa Библиотека тестировщика
Шутки программистов 📌
/channel/itumor Шутки программистов
Защита, взлом, безопасность 📌
/channel/thehaking Канал о кибербезопасности
/channel/xakep_1 Статьи из "Хакера"
Книги, статьи для дизайнеров 📌
/channel/ux_web Статьи, книги для дизайнеров
Английский 📌
/channel/UchuEnglish Английский с нуля
Математика 📌
/channel/Pomatematike Канал по математике
Excel лайфхак📌
/channel/Excel_lifehack
Сложность C++ - Что делает C++ сложным для вас?
Вопрос о том, является ли C++ сложным языком, конечно, субъективен, но мало кто будет спорить с этим утверждением.
Вопрос о том, что делает C++ сложным для вас, конечно, также субъективен, но это интересный вопрос с потенциальными последствиями. Мы можем сделать вывод:
Есть функции, которые нам нужно учить лучше.
Есть области, которые нуждаются в улучшении через процесс ISO
Есть области, которые могут выиграть от улучшения инструментов
https://www.incredibuild.com/blog/c-complexity-what-makes-c-complex-for-you
#cpp #programming
👉 @cpp_lib
👌 Хотите стать тимлидом в международном проекте?
Ждем вас на открытом вебинаре «Кросс-культурные взаимодействия и менеджмент в международных условиях» 15 августа в 20:00 мск, где мы разберём:
- культурные измерения и различия в командах и как с ними справляться;
- концепции Cultural Dimensions от Хоффстеда и Cultural Map от Эрин Майер;
- ответы на все возникающие вопросы.
Спикер Руслан Казанцев — Senior Game Designer в ААА-студии, работал со сценарной командой сериала «Ходячие мертвецы», опытный лид и преподаватель.
Встречаемся в рамках курса «Team Lead». Все участники вебинара получат специальную цену на обучение!
➡️Регистрация открыта: https://vk.cc/czlPJ8Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Как найти работу для фиксиков: анализируем Godot Engine
Разработка игр и их прохождение могут быть невероятно увлекательными и затягивающими занятиями, приносящими огромное удовольствие. Но ничто так не портит впечатление от игрового процесса, как коварно спрятавшийся баг. Поэтому сегодня под нашим пристальным вниманием окажется Open Source движок Godot Engine. Давайте проверим, насколько он хорош, и готов ли он подарить нам незабываемые эмоции от создания и прохождения игр.
https://habr.com/ru/companies/pvs-studio/articles/834420/
#cpp #programming
👉 @cpp_lib
Реализуем эффективный тупль с помощью C++26
Свет видел много любительских реализаций std::tuple, и реализация своих велосипедов — наверное, это действительно действенный способ обучения: вряд-ли можно сказать, что ты что-то по-настоящему понимаешь, если не можешь объяснить, как это что-то устроено.
Многие пытливые умы на протяжении десятилетий задавались вопросом: как же реализован std::tuple, как мне реализовать свой тупль (кортеж)? [1]
И немало было дано ответов на такие вопросы и написано статей ([2]). Однако я берусь утверждать, что все они имеют один фатальный недостаток! Конкретнее, они все рассматривают в основном лишь один (и при этом неэффективный) способ реализации: с помощью множественного наследования или рекурсивного инстанцирования, имеющий в свой очередь множество своих недостатков, главный из которых — неэффективное использование памяти.
В то время как современный C++ позволяет реализовать тупль гораздо проще (без обилия шаблоноты) и эффективнее.
https://habr.com/ru/articles/835176/
#cpp #programming
👉 @cpp_lib
Коллекция ресурсов по современному C++
https://github.com/rigtorp/awesome-modern-cpp
#cpp #programming
👉 @cpp_lib
Strlcpy, или как CPU противоречат здравому смыслу
Один из моих старых постов о strlcpy недавно вызвал обсуждения на различных форумах. Вероятно, с этим как-то связан выпуск новой версии POSIX. Многие авторы приводили один контраргумент, который я слышал и раньше:
В общем случае, когда исходная строка умещается в конечный буфер, strlcpy будет обходить строку только один раз, а strlen + memcpy будут обходить её дважды.
Под этим аргументом скрывается допущение о том, что однократный обход строки выполняется быстрее. И, честно говоря, это вполне разумное допущение. Но справедливо ли оно? Об этом мы и поговорим в статье.
https://habr.com/ru/articles/838116/
#cpp #programming
👉 @cpp_lib
Оптимизируем до последней капли: cache-friendly код на C++
❓Хотите узнать, как «выжимать» последние проценты скорости в программе на C++?
⏰ Ждем вас на открытом вебинаре 4 сентября в 20:00 мск, где мы разберем:
- как реализовать доступ к оперативной памяти (ОП) в современных системах;
- «плохие» и «хорошие» паттерны доступа к ОП;
- как писать дружелюбный к кэшу код на C++.
Урок идеально подходит для разработчиков, которые заботятся о скорости выполнения кода и уже пишут или планируют перейти на C++.
🔥 Спикер Андрей Рыжиков — разработчик в НИИ обработки аэрокосмических изображений.
Встречаемся в преддверии старта курса «Специализация C++ Developer». Все участники вебинара получат специальную цену на обучение!
👉Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cAb7tO
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Foodtech tour Яндекса возвращается: стартуем с митапом в Москве 19 сентября!
В программе суровая энтерпрайз-разработка для опытных бэкендеров. Эксперты расскажут о работе с монолитами на примере Еды и переосмыслении процессинга заказов в Лавке. От Маркета заявлен воркшоп с архитектурными кейсами: без практики точно не останемся.
Foodtech tour охватит 4 столицы: Москва — 19 сентября, Санкт-Петербург — 17 октября, Казань — 14 ноября и Минск — 5 декабря.
👉🏻 Регистрируйтесь в своём городе!
Знакомство с constexpr unique_ptr (С++23)
https://andreasfertig.blog/2023/10/using-cpp23s-constexpr-unique_ptr/
#cpp #programming
👉 @cpp_lib
Рассказываем, как прошла C++ Zero Cost Conf - конференция по прикладному C++
На сцене выступили с докладами 14 спикеров из разных компаний, в том числе:
🔸 Антон Полухин, руководитель группы разработки общих компонент Яндекс Go. Поделился свежими новостями от Российской рабочей группы по стандартизации С++
🔸 Андрей Аксёнов, руководитель разработки инфраструктуры поиска Авито/Sphinx. Рассказал, как парсить гигабайты в секунду
🔸 Василий Куликов, ведущий разработчик в Яндексе. Рассмотрел основные проблемы реализации примитивов синхронизации во фреймворке userver
🔸 Константин Владимиров, руководитель отдела компиляторов и средств разработки в Syntacore. Рассказал об интересных C++-решениях в генераторе llvm-snippy
🔸 Вадим Белотицкий, руководитель разработки сервиса «Межгород» Яндекс Такси. Провёл квиз «Геогессинг». Зрители угадывали локации, в которых расположены сервисы Яндекса
Не обошлось без активностей за пределами основной сцены. Расставили большие доски с примерами неработающего кода, а участники пытались понять, где кроется ошибка и как её исправить. А ещё была целая зона настолок от инженеров Яндекса: на выбор «Гусиус», «IT-крокодил», «Угадай кто» и «IT’s Доббль».
📹 Все выступления спикеров собрали в плейлист. Посмотреть его можно [в VK Видео] или [на ютуб-канале].
Не знаете, как эффективно управлять конфигурацией и обеспечивать консенсус данных? Ваши проекты сталкиваются с проблемами масштабируемости и надежности?
Тогда присоединяйтесь к открытому вебинару 21 августа в 20:00 мск, где мы:
1. Рассмотрим основы и архитектуру Apache Zookeeper: алгоритмы обеспечения консенсуса данных (Zookeeper Atomic Broadcast с Paxos)
2. Узнаем, как Zookeeper обеспечивает координацию и синхронизацию в распределенных системах
3. Разберём методы настройки и администрирования Zookeeper
👨💻🛠👨🏻💻 Урок будет полезен разработчикам, DevOps-инженерам, администраторам систем и сетей, архитекторам ПО и всем, кто хочет глубже понять работу Apache Zookeeper.
🔴 Запишитесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/czyvoiРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Настоящее железо: открыта регистрация на митап о роботах Маркета!
В субботу, 7 сентября пройдёт Яндекс Robotics Day — ивент для backend, ML/CV-разработчиков и hardware-инженеров в Москве.
Железный аргумент зарегистрироваться — митап пройдёт в центре робототехники Яндекса. В программе доклады и экскурсия с демонстрацией складских роботов, а ещё афтепати и нетворкинг с экспертами.
👉🏻 Подробная программа доступна на сайте. После регистрации дождитесь подтверждения заявки. До встречи!
Что советуют разработчики на С++
Курс Introductions To Algorithms
Курс Algorithms от Стэнфордского Университета
Сборник из 145 алгоритмов для самостоятельной практики
Книга «Диалекты Basic для ZX Spectrum» под редакцией Родионова Н. Ю., Ларченко А. А.
Выступление Джонатана Боккара на CppCon 2018 "105 STL algorithms in less than an hour"
#cpp #programming
👉 @cpp_lib
👉 Хотите научиться эффективно обрабатывать ошибки в C++ и повысить надежность своих программ?
⏰ Ждем вас на открытом вебинаре 20 августа в 20:00 мск, где мы разберем:
- концепции генерации и обработки ошибок в C++;
- классические способы возвращения ошибок и инструменты стандартной библиотеки;
- механизмы работы с исключениями в C++.
🏆 Спикер Евгений Пальчуковский — много лет занимается автоматизацией брокерской деятельности в России и мире в качестве программиста на С++.
Встречаемся в преддверии старта курса «Специализация C++ Developer». Все участники вебинара получат специальную цену на обучение!
👉 Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/czrkos
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Тысяча и одна библиотека С++
В жизни каждого программиста С++ рано или поздно возникает задача, которую кто-либо уже решил. Однако найти это решение бывает очень непросто в силу разных причин: оно недостаточно разрекламировано, либо имеет нечеткую документацию, или возникает проблема языкового барьера, ну, или поисковики просто плохо ищут).
Столкнувшись много раз подряд с тем, что найти что-то толковое довольно непросто, я решил попробовать распутать это узел и предложить для русскоязычных читателей свой справочник классных библиотек на С++. Я исходил из этого источника. Это очень многогранный и объемный список библиотек языка С++, но, скажем так, у меня были к нему вопросы. Потому я сделал перевод, затем значительно улучшил его в плане содержания (далее объясню, как, почему и зачем). На выходе получилось около 1000 библиотек. Как в сказке). Они, конечно, не покрывают все возможные задачи и предметные области, но поверьте, они затрагивают действительно многое.
https://habr.com/ru/articles/831754/
#cpp #programming
👉 @cpp_lib
DPP
D++ — это легковесная и эффективная библиотека для Discord, написанная на современном C++. Она охватывает максимально возможную часть спецификации API и обладает невероятно малым объемом памяти даже при кэшировании больших объемов данных.
https://github.com/brainboxdotcc/DPP
#cpp #programming
👉 @cpp_lib
💪 Пройди тест по C++ и проверь свои знания!
Ответишь — пройдешь на продвинутый курс "C++ Developer. Professional" от OTUS по специальной цене + получишь 64 записи открытых уроков от преподавателей курса бесплатно!🎁.
➡️ ПРОЙТИ ТЕСТ: https://clck.ru/3CToaW/?erid=2VtzqwdicQk
✅ Получи бонусы и успей присоединится к августовской группе!
Курс по ООП в С++
введение
инкапсуляция
наследование
полиморфизм
шаблоны и метапрограммирование
источник
#cpp #programming
👉 @cpp_lib
Курс «Введение в Реверс инжиниринг»! Запись до 17 августа
Курс подойдёт всем интересующимся темой реверс-инжиниринга. По окончанию курса, вы будете уметь проводить исследования исполняемых файлов и вносить изменения в логику программ.
Курс включает в себя:
- Работу с отладчиком IDA
- Практические навыки анализа исполняемых файлов без исходного кода
- Изучение ассемблера, языка Си и EXE / ELF
- Восстановление исходного кода из скомпилированных программ
🏆 Сертификат / удостоверение о повышении квалификации
Пишите нам @Codeby_Academy или узнайте подробнее о курсе здесь