es
Feedback
Библиотека C/C++ разработчика

Библиотека C/C++ разработчика

Ir al canal en Telegram

Полезные материалы по всему, что может быть полезно плюсовику/сишнику. По всем вопросам @evgenycarter

Mostrar más
7 321
Suscriptores
-324 horas
+57 días
+1230 días
Archivo de publicaciones
Создаем свой собственный Lisp Если вы хотите изучить язык C или когда-либо задумывались о том, как создать свой собственный я
Создаем свой собственный Lisp Если вы хотите изучить язык C или когда-либо задумывались о том, как создать свой собственный язык программирования, эта книга для вас. Всего за несколько строк кода я научу вас использовать C, и вместе мы начнем создавать ваш собственный язык. По пути мы узнаем о странной и удивительной природе Lisp, как развивать реальный проект, лаконично решать задачи и писать красивый код! Эту книгу можно бесплатно прочитать онлайн, так что вы можете начать прямо сейчас! Но для тех, кто хочет выразить свою поддержку или получить лучший опыт чтения, книга также доступна для покупки в печатном формате или недорого в основных электронных форматах. https://www.buildyourownlisp.com/contents #cpp #programming 👉 @cpp_lib

Яндекс запускает новый сезон Тренировок по алгоритмам! Для участников доступно новое направление: машинное обучение. Трениров
Яндекс запускает новый сезон Тренировок по алгоритмам! Для участников доступно новое направление: машинное обучение. Тренировки проходят формате онлайн-интенсивов с лекциями, разбором домашек и наградами для лучших участников. По окончании тренировок, участников ждет сертификат о прохождении: решенные задачи после курса можно добавить к себе в портфолио. А лучших учеников ждет: — Пробное техническое собеседование в Яндекс Успешное интервью могут засчитать при отборе на стажировку — Промокод 3000 ₽ на Яндекс Маркет Не упускай возможность прокачать харды и скилл прохождения собеседований в IT. Зарегистрироваться можно тут.

Контейнеры Linux в 500 строках кода Я уже много лет прямо или косвенно использую контейнеры Linux, но мне хотелось познакомиться с ними поближе. Поэтому я написал немного кода. Раньше это было 500 строк кода, клянусь, но я немного изменил его с момента публикации; в итоге получилось примерно на 70 строк больше. Статья объясняет, как работают Linux-контейнеры, показывая минимальную реализацию на 500 строках кода. Она рассматривает ключевые концепции, такие как namespaces, cgroups и монтирование файловых систем, и даёт простое, но функциональное представление о механике, которая лежит в основе контейнеров, например, Docker. Основная цель — дать читателю ясное и практическое введение в то, как работают контейнеры на базовом уровне. https://blog.lizzie.io/linux-containers-in-500-loc.html #cpp #programming 👉 @cpp_lib

🔥 Weekend Offer Backend в Яндекс 26–27 октября Устройтесь backend-разработчиком в Яндекс онлайн за одни выходные. ↔️ К участ
🔥 Weekend Offer Backend в Яндекс 26–27 октября Устройтесь backend-разработчиком в Яндекс онлайн за одни выходные. ↔️ К участию приглашаем разработчиков на C++, Python, Go, Java или Kotlin, с опытом коммерческой разработки от трёх лет, которые готовы работать в офисном или гибридном режиме на территории России или Республики Беларусь. 🛐План простой: зарегистрируйтесь и до 23 октября решите пару задачек в Контесте, 26 октября пройдите два технических собеседования, а 27 октября получите офер. 🔛В Weekend Offer Backend участвуют разные сервисы: Финтех, HR-Tech, Образование, МВА, Биллинг, Геосервисы, Реклама, Поисковые сценарии. Чтобы заранее подумать, с кем вам хочется пообщаться 17 октября мы проведем онлайн-встречу в зуме, где команды расскажут о себе и задачах. 🆖 Узнать подробности и принять участие можно здесь.

Создаём эмулятор CHIP-8 [C++] Я всегда любил эмуляторы, потому что они позволяют мне играть в старые игры, которые нравились мне в детстве, поэтому я подумал, что было бы интересно узнать, как они работают, и как собрать такой эмулятор. Моя настоящая цель - создать эмулятор NES, но после некоторых исследований я решил прислушаться к советам интернета и начать с создания эмулятора для гораздо менее сложной CHIP-8. Это хорошая ступенька для перехода к NES. https://austinmorlan.com/posts/chip8_emulator/ #cpp #programming 👉 @cpp_lib

🌐 Научитесь создавать сетевые сервисы на C++ с помощью фреймворка userver! Приглашаем вас на открытый вебинар 17 октября в 2
🌐 Научитесь создавать сетевые сервисы на C++ с помощью фреймворка userver! Приглашаем вас на открытый вебинар 17 октября в 20:00 МСК, где мы подробно разберем: - Как подключить userver в проект; - Как собрать userver с нужной конфигурацией; - Как написать сетевой сервис, работающий с REST и WebSocket API; - Как реализовать аутентификацию для нового сервиса. 🎓 Встречаемся в преддверии старта курса «C++ Developer. Professional». Все участники вебинара получат специальную цену на обучение! 🔗 Регистрируйтесь прямо сейчас, чтобы не пропустить это важное мероприятие: https://otus.pw/Dtoo/?erid=2VtzqxPykF5 Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Самые быстрые мьютексы Cosmopolitan Libc хорошо известна своим «полиглотным жирным бинарным» хаком, который позволяем исполняемым файлам запускаться на шести операционных системах для AMD64/ARM64. Вас может удивить, что при этом она может быть лучшей С‑библиотекой для вашего продакшена. Чтобы продемонстрировать это, давайте сравним библиотеку мьютексов Cosmo с другими платформами. Мы напишем простой тест, который создает 30 потоков, увеличивающих одно и то же число 100 000 раз. Это поможет проверить, насколько хорошо реализация мьютексов справляется с задачей при интенсивном использовании. По сути он будет следующим (см. сегмент внизу статьи для полного исходного кода).

int g_chores;
pthread_mutex_t g_locker = PTHREAD_MUTEX_INITIALIZER;

void *worker(void *arg) {
  for (int i = 0; i < ITERATIONS; ++i) {
    pthread_mutex_lock(&g_locker);
    ++g_chores;
    pthread_mutex_unlock(&g_locker);
  }
  return 0;
}
https://habr.com/ru/companies/beget/articles/848318/ #cpp #programming 👉 @cpp_lib

Туториал - Пишем оболочку на C Легко считать себя "не настоящим программистом". Существуют программы, которые используют все, и легко возвести их разработчиков на пьедестал. Хотя разработка крупных программных проектов непроста, зачастую основная идея такого ПО довольно проста. Реализовать ее самому — это увлекательный способ доказать, что у тебя есть всё необходимое, чтобы быть настоящим программистом. Поэтому это руководство о том, как я написал свою упрощенную Unix-оболочку на C, в надежде, что это заставит других почувствовать то же самое. Код описанной здесь, получившей название lsh, доступен на GitHub.

#define LSH_RL_BUFSIZE 1024
char *lsh_read_line(void)
{
  int bufsize = LSH_RL_BUFSIZE;
  int position = 0;
  char *buffer = malloc(sizeof(char) * bufsize);
  int c;

  if (!buffer) {
    fprintf(stderr, "lsh: allocation error\n");
    exit(EXIT_FAILURE);
  }

  while (1) {
    // Read a character
    c = getchar();

    // If we hit EOF, replace it with a null character and return.
    if (c == EOF || c == '\n') {
      buffer[position] = '\0';
      return buffer;
    } else {
      buffer[position] = c;
    }
    position++;

    // If we have exceeded the buffer, reallocate.
    if (position >= bufsize) {
      bufsize += LSH_RL_BUFSIZE;
      buffer = realloc(buffer, bufsize);
      if (!buffer) {
        fprintf(stderr, "lsh: allocation error\n");
        exit(EXIT_FAILURE);
      }
    }
  }
}
https://brennan.io/2015/01/16/write-a-shell-in-c/ #cpp #programming 👉 @cpp_lib

Подборка Telegram каналов для программистов Системное администрирование 📌 https://t.me/sysadmin_girl Девочка Сисадмин https://t.me/srv_admin_linux Админские угодья https://t.me/linux_srv Типичный Сисадмин https://t.me/devops_star DevOps Star (Звезда Девопса) https://t.me/i_linux Системный администратор https://t.me/linuxchmod Linux https://t.me/sys_adminos Системный Администратор https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало) https://t.me/sysadminof Книги для админов, полезные материалы https://t.me/i_odmin Все для системного администратора https://t.me/i_odmin_book Библиотека Системного Администратора https://t.me/i_odmin_chat Чат системных администраторов https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др. https://t.me/sysadminoff Новости Линукс Linux 1C разработка 📌 https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С Программирование C++📌 https://t.me/cpp_lib Библиотека C/C++ разработчика https://t.me/cpp_knigi Книги для программистов C/C++ https://t.me/cpp_geek Учим C/C++ на примерах Программирование Python 📌 https://t.me/pythonofff Python академия. Учи Python быстро и легко🐍 https://t.me/BookPython Библиотека Python разработчика https://t.me/python_real Python подборки на русском и английском https://t.me/python_360 Книги по Python Rus Java разработка 📌 https://t.me/BookJava Библиотека Java разработчика https://t.me/java_360 Книги по Java Rus https://t.me/java_geek Учим Java на примерах GitHub Сообщество 📌 https://t.me/Githublib Интересное из GitHub Базы данных (Data Base) 📌 https://t.me/database_info Все про базы данных Мобильная разработка: iOS, Android 📌 https://t.me/developer_mobila Мобильная разработка https://t.me/kotlin_lib Подборки полезного материала по Kotlin Фронтенд разработка 📌 https://t.me/frontend_1 Подборки для frontend разработчиков https://t.me/frontend_sovet Frontend советы, примеры и практика! https://t.me/React_lib Подборки по React js и все что с ним связано Разработка игр 📌 https://t.me/game_devv Все о разработке игр Библиотеки 📌 https://t.me/book_for_dev Книги для программистов Rus https://t.me/programmist_of Книги по программированию https://t.me/proglb Библиотека программиста https://t.me/bfbook Книги для программистов https://t.me/books_reserv Книги для программистов БигДата, машинное обучение 📌 https://t.me/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning Программирование 📌 https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций https://t.me/coddy_academy Полезные советы по программированию https://t.me/rust_lib Полезный контент по программированию на Rust https://t.me/golang_lib Библиотека Go (Golang) разработчика https://t.me/itmozg Программисты, дизайнеры, новости из мира IT https://t.me/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻 https://t.me/nodejs_lib Подборки по Node js и все что с ним связано https://t.me/ruby_lib Библиотека Ruby программиста QA, тестирование 📌 https://t.me/testlab_qa Библиотека тестировщика Шутки программистов 📌 https://t.me/itumor Шутки программистов Защита, взлом, безопасность 📌 https://t.me/thehaking Канал о кибербезопасности https://t.me/xakep_1 Статьи из "Хакера" Книги, статьи для дизайнеров 📌 https://t.me/ux_web Статьи, книги для дизайнеров Английский 📌 https://t.me/UchuEnglish Английский с нуля Математика 📌 https://t.me/Pomatematike Канал по математике https://t.me/phis_mat Обучающие видео, книги по Физике и Математике Excel лайфхак📌 https://t.me/Excel_lifehack https://t.me/tikon_1 Новости высоких технологий, науки и техники💡 https://t.me/mir_teh Мир технологий (Technology World) Вакансии 📌 https://t.me/sysadmin_rabota Системный Администратор https://t.me/progjob Вакансии в IT

Шеф, всё пропало Ошибки программистов C++ — это отдельный вид искусства, вроде бы простой язык, но стоит отвлечься на чашечку
Шеф, всё пропало Ошибки программистов C++ — это отдельный вид искусства, вроде бы простой язык, но стоит отвлечься на чашечку кофе, как компилятор начинает вываливать простыню ворнингов пополам с ошибками, и иногда это больше похоже на древнеегипетские письмена, чем на нормальный выхлоп. Вы наверное и сами не раз сталкивались с разыменованием nullptr или перепутали (= и ==) по недосмотру. Часто причиной ошибкой является лень или невнимательность, или усталость - не зря появились суеверия "не комитить в пятницу вечером", "не кодить в состоянии изменного сознания" или "избегать кода под кофейным угаром", ну это когда три-четыре кружечки кофе навернул и пошел нести добрый код направо и налево. https://habr.com/ru/articles/848662/ #cpp #programming 👉 @cpp_lib

Хотите узнать, как превратить массив в пирамиду и ускорить сортировку данных? Ждем вас на бесплатном вебинаре 14 октября в 20
Хотите узнать, как превратить массив в пирамиду и ускорить сортировку данных? Ждем вас на бесплатном вебинаре 14 октября в 20:00 мск, где мы разберем: - как реализовать алгоритм сортировки выбором с линейной сложностью; - как превратить массив в пирамиду (кучу) для быстрого доступа к максимальному элементу; - как создать алгоритм пирамидальной сортировки с квазилинейной сложностью — О(N log N); - визуальные примеры работы алгоритма на конкретных числах. 🚀 Спикер Евгений Волосатов — программист баз данных и преподаватель с огромным и разнообразным опытом, автор статей и учебных программ по C#, Java, PHP. Встречаемся в преддверии старта курса «Алгоритмы и структуры данных». Все участники вебинара получат специальную цену на обучение! 🔴 Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cChlzg Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Написание минимального JIT-компилятора для x86-64 на C++. Часть 2 В моей предыдущей статье я показал, как сгенерировать машинный код для функции во время выполнения, скопировать этот код в часть памяти, помеченную как исполняемую, и вызвать её из C++. Теперь мы пойдём в обратную сторону — вызовем функцию на C++ из функции, сгенерированной во время выполнения. Как и раньше, я предполагаю, что вы пробуете код на Linux или macOS. Если помните из первой части, мы начали с добавления инструкций машинного кода в std::vector и копирования этого кода на страницу исполняемой памяти. Хотя этот подход был хорош с дидактической точки зрения, на практике, вероятно, вы захотите записывать код напрямую в исполняемую память. Вот пример, как я предлагаю это сделать:

1     MemoryPages mp;
2     mp.push(0x48); mp.push(0xb8);
https://solarianprogrammer.com/2018/01/12/writing-minimal-x86-64-jit-compiler-cpp-part-2/ #cpp #programming 👉 @cpp_lib

Написание минимального JIT-компилятора для x86-64 на C++ В этой статье я покажу, как написать минимальный, базовый JIT-компилятор для x86-64 на C++, который работает на macOS, Linux и потенциально может работать на Windows через WSL. Для наших целей JIT-компиляция — это техника, с помощью которой программа генерирует машинный код во время выполнения, основываясь на вводе пользователя. Программа на C++ компилируется заранее (AOT, ahead of time), что обычно означает, что после того, как исходный код был скомпилирован для конкретной машины, его нельзя изменить во время выполнения (и с точки зрения безопасности это желаемая функция). Простое и полезное применение JIT-компилятора на C++ — это компиляция новой функции на лету, основанной на других функциях, уже определенных в исходном коде.

1 // hello_0.cpp
 2 #include <iostream>
 3 #include <string>
 4 
 5 int main() {
 6     // Get the user name
 7     std::string name;
 8     std::cout << "What is your name?\n";
 9     std::getline(std::cin, name);
10     std::string hello_name = "Hello, " + name + "!\n";
11 
12     // Greet the user
13     std::cout << hello_name;
14 }
https://solarianprogrammer.com/2018/01/10/writing-minimal-x86-64-jit-compiler-cpp/ #cpp #programming 👉 @cpp_lib

☕️ Дмитрий Мезенцев, руководитель службы разработки Поиска рассказывает, как в Яндексе сочетаются атмосфера стартапа и бигтех
+5
☕️ Дмитрий Мезенцев, руководитель службы разработки Поиска рассказывает, как в Яндексе сочетаются атмосфера стартапа и бигтеха и за что он любит продуктовую разработку. А если после прочтения вам захочется работать с нами — откликайтесь на вакансию! ➡️ Бэкенд-разработчик в команду поисковых сценариев

Memory Allocators 101 - пишем простой аллокатор памяти Эта статья посвящена написанию простого аллокатора памяти на языке C.
Memory Allocators 101 - пишем простой аллокатор памяти Эта статья посвящена написанию простого аллокатора памяти на языке C. Мы реализуем malloc(), calloc(), realloc() и free(). Это статья для начинающих, поэтому я не буду описывать все детали. Этот аллокатор памяти не будет быстрым и эффективным, мы не будем подстраивать выделяемую память под границу страницы, но мы создадим работающий аллокатор памяти. Вот и все. https://arjunsreedharan.org/post/148675821737/memory-allocators-101-write-a-simple-memory #cpp #programming 👉 @cpp_lib

Шпаргалка по библиотеке fmt https://hackingcpp.com/cpp/libs/fmt.html #cpp #programming 👉 @cpp_lib
+1
Шпаргалка по библиотеке fmt https://hackingcpp.com/cpp/libs/fmt.html #cpp #programming 👉 @cpp_lib

Захват переменных без ошибок — это возможно! Как? Расскажем на бесплатном вебинаре Слёрма «Ля какие! Лямбды в С++». Поговорим
Захват переменных без ошибок — это возможно! Как? Расскажем на бесплатном вебинаре Слёрма «Ля какие! Лямбды в С++». Поговорим про: 📍 Захваты переменных, параметры, возвращаемые значения, типы замыканий. 📍 Лямбды в C++20 и C++23. 📍 Применение в реальных задачах: передача функций в алгоритмы STL, написание компактных колбэков Спикер: Юрий Вашинко, Tech Lead/Lead Developer 📆 Когда: 15 октября в 14:00 мск 🔗 Занять место на вебинаре — через бота Приходите! #реклама О рекламодателе erid: LjN8KDTvY

C++ с точки зрения Rust-разработчика: достоинства и недостатки Я профессионально программирую на Rust и, признаться, немного
C++ с точки зрения Rust-разработчика: достоинства и недостатки Я профессионально программирую на Rust и, признаться, немного этот язык продвигаю. Поэтому можете себе представить глубину моего расстройства, когда моя младшая сестрёнка, почти не умеющая программировать, обратилась ко мне и попросила научить её C++. Я попытался её отговорить, сказав, что однажды она будет сидеть за отладкой ошибок сегментирования, вооружившись Valgrind и вспоминать этот наш разговор, размышляя, где же она свернула не туда. Но она оказалась ещё упрямее меня и настаивала: хочу выучить язык программирования, которым действительно пользуются люди. https://habr.com/ru/articles/844988/ #cpp #programming 👉 @cpp_lib

Обнаружен короткий путь к офферу Сбера! 🕵️‍♀️ 12 октября приглашаем на One Day Offer Центра квантовых технологий для С++ раз
Обнаружен короткий путь к офферу Сбера! 🕵️‍♀️ 12 октября приглашаем на One Day Offer Центра квантовых технологий для С++ разработчиков. Команда создаёт квантовый компьютер и фотонные сопроцессоры для решения задач Сбера: от AI до оптимизации логистических процессов. Разработки Центра позволят оптимизировать логистические цепочки, обучать нейросети большего размера и увеличивать доходность инвестирования. Чем предстоит заниматься: ✔️ Проектировать архитектуру ПО для обработки и передачи данных. ✔️ Писать код на C++ для управления и контроля квантового компьютера. ✔️ Разрабатывать первичную инфраструктуру CI/CD и автоматическое тестирование для своего кода. ✔️ Участвовать в разработке общей архитектуры квантовых и аналоговых процессоров. ✔️ Участвовать в переносе задач потребителей на квантовые или аналоговые процессоры. Регистрируйся и создавай решения на стыке науки и технологий вместе со Сбером! 😏

Просто не копируй это То, о чем я собираюсь рассказать в статье настолько тривиально, что любой, даже начинающий, разработчик
Просто не копируй это То, о чем я собираюсь рассказать в статье настолько тривиально, что любой, даже начинающий, разработчик уже это знает - я правда очень на это надеюсь. Тем не менее, приходящий на ревью код, показывает, что люди как делали, так и продолжают делать что-то подобное:

bool LoadAnimation(str::string filename);
void DrawLines(std::vector<Points> path);
Matrix RotateObject(Matrix m, Angle angle);
int DrawSprite(Sprite sprite);
https://habr.com/ru/articles/847178/ #cpp #programming 👉 @cpp_lib