🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
-35% на курс по алгоритмам
🎄 Новый год начинается с подарков, а хороший подарок для себя — новые знания со скидкой 35%!
🌟«Алгоритмы и структуры данных» — 23 390 ₽ (вместо 35 990 ₽)
Полугодовая программа от преподавателей МФТИ и НИУ ВШЭ, которая включает в себя все необходимые знания по алгоритмам для работы.
Самое ценное — это развернутая обратная связь по всем вашим домашним заданиям, а также ссылки на полезные дополнительные материалы.
У вас не будет шансов не усвоить какие-то темы курса👌
🔥 Переходите и активируйте вводные занятия курса — https://proglib.io/w/ff97c30a
🎄 Новый год начинается с подарков, а хороший подарок для себя — новые знания со скидкой 35%!
🌟«Алгоритмы и структуры данных» — 23 390 ₽ (вместо 35 990 ₽)
Полугодовая программа от преподавателей МФТИ и НИУ ВШЭ, которая включает в себя все необходимые знания по алгоритмам для работы.
Самое ценное — это развернутая обратная связь по всем вашим домашним заданиям, а также ссылки на полезные дополнительные материалы.
У вас не будет шансов не усвоить какие-то темы курса👌
🔥 Переходите и активируйте вводные занятия курса — https://proglib.io/w/ff97c30a
Напишите программу на C++, которая запрашивает у пользователя два числа и выполняет одну из простых математических операций: сложение, вычитание, умножение или деление. Пользователь должен вводить операцию в виде символа (+, -, *, /).
Подсказка: Используйте конструкцию switch для выполнения различных операций.
Решение:
1. Переменные: Определить переменные для чисел и операции.
2. Ввод данных: Запросить у пользователя два числа и символ операции.
3. Выбор операции: Использовать switch для определения типа операции.
4. Выполнение операции: Выполнить выбранную операцию, учитывая возможные ошибки (деление на ноль).
5. Вывод результата: Вывести результат операции.
6. Обработка ошибок: В случае ошибки вывести сообщение и завершить программу.
7. Возвращение значения: Вернуть 0 при успешном завершении, ненулевой код при ошибке.
Подсказка: Используйте конструкцию switch для выполнения различных операций.
Решение:
1. Переменные: Определить переменные для чисел и операции.
2. Ввод данных: Запросить у пользователя два числа и символ операции.
3. Выбор операции: Использовать switch для определения типа операции.
4. Выполнение операции: Выполнить выбранную операцию, учитывая возможные ошибки (деление на ноль).
5. Вывод результата: Вывести результат операции.
6. Обработка ошибок: В случае ошибки вывести сообщение и завершить программу.
7. Возвращение значения: Вернуть 0 при успешном завершении, ненулевой код при ошибке.
program_invocation_name
Переменная program_invocation_name содержит имя, которое было использовано для запуска вызвавшей программы. Это значение совпадает с argv[0] в main(); отличие в том, что program_invocation_name — глобальная переменная.
Переменная program_invocation_short_name содержит базовую часть имени, которое было использовано для запуска вызвавшей программы. То есть её значение совпадает с началом program_invocation_name до последней косой черты (/).
Эти переменные автоматически инициализируются glibc при запуске программы.
Переменная program_invocation_name содержит имя, которое было использовано для запуска вызвавшей программы. Это значение совпадает с argv[0] в main(); отличие в том, что program_invocation_name — глобальная переменная.
Переменная program_invocation_short_name содержит базовую часть имени, которое было использовано для запуска вызвавшей программы. То есть её значение совпадает с началом program_invocation_name до последней косой черты (/).
Эти переменные автоматически инициализируются glibc при запуске программы.
SFML
SFML (Simple and Fast Multimedia Library) — это библиотека, предназначенная для разработки мультимедийных приложений, включая 2D и 3D игры, аудио и видео. Она предоставляет доступ к различным мультимедийным ресурсам и упрощает работу с графикой, аудио, сетью и вводом.
Вот основные шаги для использования SFML в C++:
1. Сначала установите библиотеку SFML на вашем компьютере. Вы можете скачать библиотеку с официального сайта SFML (https://www.sfml-dev.org/) и следовать инструкциям по установке для вашей операционной системы.
2. Создайте новый проект C++ в вашей среде разработки (например, Visual Studio, Code::Blocks, CLion и др.).
3. Вам нужно убедиться, что ваш проект настроен для использования SFML. Для этого укажите пути к заголовочным файлам и библиотекам SFML в настройках проекта.
4. Ваш код будет включать заголовочные файлы SFML и вызов функций для работы с графикой, аудио и другими мультимедийными ресурсами.
5. Скомпилируйте свой проект с учетом настроек SFML, и запустите его.
SFML (Simple and Fast Multimedia Library) — это библиотека, предназначенная для разработки мультимедийных приложений, включая 2D и 3D игры, аудио и видео. Она предоставляет доступ к различным мультимедийным ресурсам и упрощает работу с графикой, аудио, сетью и вводом.
Вот основные шаги для использования SFML в C++:
1. Сначала установите библиотеку SFML на вашем компьютере. Вы можете скачать библиотеку с официального сайта SFML (https://www.sfml-dev.org/) и следовать инструкциям по установке для вашей операционной системы.
2. Создайте новый проект C++ в вашей среде разработки (например, Visual Studio, Code::Blocks, CLion и др.).
3. Вам нужно убедиться, что ваш проект настроен для использования SFML. Для этого укажите пути к заголовочным файлам и библиотекам SFML в настройках проекта.
4. Ваш код будет включать заголовочные файлы SFML и вызов функций для работы с графикой, аудио и другими мультимедийными ресурсами.
5. Скомпилируйте свой проект с учетом настроек SFML, и запустите его.
std::optional
std::optional — это шаблонный класс, введенный в стандарте C++17, который предоставляет возможность представлять объект, который может отсутствовать (не иметь значения). Это бывает полезно, когда у вас есть ситуации, когда значение может быть или не быть, и вам не хочется использовать какие-то специальные значения (например, нулевые указатели) для представления отсутствия значения.
В примере выше функция divide возвращает std::optional, чтобы указать, что результат деления может быть или не быть (если делитель равен нулю). В функции main мы проверяем, есть ли значение в result, и если есть, выводим его значение. В противном случае выводим сообщение об ошибке.
std::optional — это шаблонный класс, введенный в стандарте C++17, который предоставляет возможность представлять объект, который может отсутствовать (не иметь значения). Это бывает полезно, когда у вас есть ситуации, когда значение может быть или не быть, и вам не хочется использовать какие-то специальные значения (например, нулевые указатели) для представления отсутствия значения.
В примере выше функция divide возвращает std::optional, чтобы указать, что результат деления может быть или не быть (если делитель равен нулю). В функции main мы проверяем, есть ли значение в result, и если есть, выводим его значение. В противном случае выводим сообщение об ошибке.
Аллокатор
Аллокатор в — это компонент, который отвечает за выделение и освобождение памяти в ходе выполнения программы. Аллокаторы используются для управления динамической памятью и могут помочь оптимизировать использование памяти и улучшить производительность программы.
В стандартной библиотеке C++ есть несколько аллокаторов, таких как new и delete, которые предоставляют базовую функциональность выделения и освобождения памяти. Однако C++ также предоставляет механизмы для создания собственных аллокаторов, которые могут быть настроены и оптимизированы под конкретные нужды приложения.
Аллокатор в — это компонент, который отвечает за выделение и освобождение памяти в ходе выполнения программы. Аллокаторы используются для управления динамической памятью и могут помочь оптимизировать использование памяти и улучшить производительность программы.
В стандартной библиотеке C++ есть несколько аллокаторов, таких как new и delete, которые предоставляют базовую функциональность выделения и освобождения памяти. Однако C++ также предоставляет механизмы для создания собственных аллокаторов, которые могут быть настроены и оптимизированы под конкретные нужды приложения.
Рекурсивный мьютекс
Рекурсивный мьютекс (recursive mutex) — это специальный тип мьютекса, который позволяет одному и тому же потоку многократно захватывать мьютекс, не приводя к блокировке. Это полезно в ситуациях, когда один и тот же поток может вызывать функции, которые используют мьютекс, несколько раз вложено, и без рекурсивных мьютексов это могло бы привести к блокировке потока.
В C++ стандартная библиотека предоставляет класс std::recursive_mutex для работы с рекурсивными мьютексами. Код с примера создает два потока, каждый из которых вызывает функцию foo, которая захватывает рекурсивный мьютекс несколько раз. Благодаря рекурсивному мьютексу, это не вызывает блокировки, и программа корректно работает.
Обратите внимание, что необходимо быть осторожным при использовании рекурсивных мьютексов, чтобы избежать возможных проблем с блокировкой и дедлоками.
Рекурсивный мьютекс (recursive mutex) — это специальный тип мьютекса, который позволяет одному и тому же потоку многократно захватывать мьютекс, не приводя к блокировке. Это полезно в ситуациях, когда один и тот же поток может вызывать функции, которые используют мьютекс, несколько раз вложено, и без рекурсивных мьютексов это могло бы привести к блокировке потока.
В C++ стандартная библиотека предоставляет класс std::recursive_mutex для работы с рекурсивными мьютексами. Код с примера создает два потока, каждый из которых вызывает функцию foo, которая захватывает рекурсивный мьютекс несколько раз. Благодаря рекурсивному мьютексу, это не вызывает блокировки, и программа корректно работает.
Обратите внимание, что необходимо быть осторожным при использовании рекурсивных мьютексов, чтобы избежать возможных проблем с блокировкой и дедлоками.
Что такое TDD?
TDD (Test-Driven Development) — это подход к разработке программного обеспечения, при котором сначала пишутся автоматические тесты, определяющие желаемое поведение кода, а затем реализуется минимально необходимый код, чтобы пройти эти тесты.
Основные принципы TDD:
— Написание теста перед кодом: сначала пишется тест, определяющий желаемую функциональность. Затем пишется минимальный код, чтобы пройти этот тест.
— Рефакторинг: после прохождения теста код рефакторится для улучшения структуры и читаемости, при этом все тесты должны оставаться пройденными.
— Повторение: цикл повторяется — новый тест, код, рефакторинг.
— Тесты должны быть автоматизированными и запускаться очень часто.
Преимущества TDD: предотвращение дефектов, улучшение структуры кода, быстрая обратная связь.
TDD позволяет создавать код, удовлетворяющий требованиям и хорошо тестируемый.
TDD (Test-Driven Development) — это подход к разработке программного обеспечения, при котором сначала пишутся автоматические тесты, определяющие желаемое поведение кода, а затем реализуется минимально необходимый код, чтобы пройти эти тесты.
Основные принципы TDD:
— Написание теста перед кодом: сначала пишется тест, определяющий желаемую функциональность. Затем пишется минимальный код, чтобы пройти этот тест.
— Рефакторинг: после прохождения теста код рефакторится для улучшения структуры и читаемости, при этом все тесты должны оставаться пройденными.
— Повторение: цикл повторяется — новый тест, код, рефакторинг.
— Тесты должны быть автоматизированными и запускаться очень часто.
Преимущества TDD: предотвращение дефектов, улучшение структуры кода, быстрая обратная связь.
TDD позволяет создавать код, удовлетворяющий требованиям и хорошо тестируемый.
std::memory_order_acquire
std::memory_order_acquire используется для управления порядком операций с памятью в многопоточных программах. Операция загрузки с этим порядком памяти гарантирует, что никакие чтения или записи в текущем потоке не могут быть переупорядочены до этой загрузки.
Все записи в других потоках, которые освобождают ту же атомарную переменную, видны в текущем потоке.
В этом примере два потока выполняют операции записи и чтения на двух атомарных переменных x и y.
— Операции записи выполняются с std::memory_order_relaxed, что означает, что они не устанавливают никаких ограничений на порядок операций с памятью.
— Операции чтения выполняются с std::memory_order_acquire, что гарантирует, что все записи в других потоках, которые освобождают ту же атомарную переменную, будут видны в текущем потоке после этого вызова load.
std::memory_order_acquire используется для управления порядком операций с памятью в многопоточных программах. Операция загрузки с этим порядком памяти гарантирует, что никакие чтения или записи в текущем потоке не могут быть переупорядочены до этой загрузки.
Все записи в других потоках, которые освобождают ту же атомарную переменную, видны в текущем потоке.
В этом примере два потока выполняют операции записи и чтения на двух атомарных переменных x и y.
— Операции записи выполняются с std::memory_order_relaxed, что означает, что они не устанавливают никаких ограничений на порядок операций с памятью.
— Операции чтения выполняются с std::memory_order_acquire, что гарантирует, что все записи в других потоках, которые освобождают ту же атомарную переменную, будут видны в текущем потоке после этого вызова load.
Самые полезные каналы для программистов в одной подборке!
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
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 запрещена на территории РФ
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.