Что такое рефакторинг?
Рефакторинг — это процесс изменения внутренней структуры программы без изменения ее внешнего поведения.
Рефакторинг кода может применяться в следующих ситуациях:
— Улучшение читаемости и понятности кода.
— Оптимизация производительности.
— Устранение дублирования кода.
Рефакторинг особенно важен при работе над большими проектами, где код многократно изменяется и расширяется. Он позволяет поддерживать кодбейз чистым, современным и масштабируемым.
#вопросы_с_собеседований
Рефакторинг — это процесс изменения внутренней структуры программы без изменения ее внешнего поведения.
Рефакторинг кода может применяться в следующих ситуациях:
— Улучшение читаемости и понятности кода.
— Оптимизация производительности.
— Устранение дублирования кода.
Рефакторинг особенно важен при работе над большими проектами, где код многократно изменяется и расширяется. Он позволяет поддерживать кодбейз чистым, современным и масштабируемым.
#вопросы_с_собеседований
Паттерн Strategy
Паттерн Strategy — это паттерн проектирования, который позволяет определять семейства связанных алгоритмов и делать их взаимозаменяемыми.
Это дает возможность выбирать конкретный алгоритм во время выполнения программы.
Основная идея паттерна Strategy заключается в том, чтобы вынести алгоритмы в отдельные классы-стратегии и передавать нужную стратегию в клиентский код.
Это паттерн используется, когда:
— Нужно использовать разные варианты одного и того же алгоритма в разных ситуациях.
— Нужно легко добавлять новые стратегии, не меняя существующий клиентский код.
— Нужно избавиться от условных операторов, выбирающих алгоритм.
#код
Паттерн Strategy — это паттерн проектирования, который позволяет определять семейства связанных алгоритмов и делать их взаимозаменяемыми.
Это дает возможность выбирать конкретный алгоритм во время выполнения программы.
Основная идея паттерна Strategy заключается в том, чтобы вынести алгоритмы в отдельные классы-стратегии и передавать нужную стратегию в клиентский код.
Это паттерн используется, когда:
— Нужно использовать разные варианты одного и того же алгоритма в разных ситуациях.
— Нужно легко добавлять новые стратегии, не меняя существующий клиентский код.
— Нужно избавиться от условных операторов, выбирающих алгоритм.
#код
lmdeploy
LMDeploy — это набор инструментов для сжатия, развертывания и обслуживания LLM.
Открыть страницу
LMDeploy — это набор инструментов для сжатия, развертывания и обслуживания LLM.
Открыть страницу
Сколько лет опыта по вашему должен иметь синьор?
#интерактив
#интерактив
RCU (Read-Copy-Update)
RCU (Read-Copy-Update) — это механизм синхронизации доступа к данным в многопоточных приложениях. Он позволяет избежать блокировок при чтении данных, делая копию для чтения и обновляя оригинал после того, как все чтения завершены.
RCU особенно полезен, когда чтение данных происходит гораздо чаще, чем запись.
В примере мы сначала берем rcu_read_lock, чтобы защитить чтение foo. В другом потоке происходит модификация foo с помощью rcu_assign_pointer, которая делает копию данных, а оригинал удаляется после synchronize_rcu.
Таким образом чтение в первом потоке происходит без блокировок и избегает конфликтов с изменением данных в другом потоке. RCU гарантирует, что указатель foo будет виден как старое значение в первом потоке.
#код
RCU (Read-Copy-Update) — это механизм синхронизации доступа к данным в многопоточных приложениях. Он позволяет избежать блокировок при чтении данных, делая копию для чтения и обновляя оригинал после того, как все чтения завершены.
RCU особенно полезен, когда чтение данных происходит гораздо чаще, чем запись.
В примере мы сначала берем rcu_read_lock, чтобы защитить чтение foo. В другом потоке происходит модификация foo с помощью rcu_assign_pointer, которая делает копию данных, а оригинал удаляется после synchronize_rcu.
Таким образом чтение в первом потоке происходит без блокировок и избегает конфликтов с изменением данных в другом потоке. RCU гарантирует, что указатель foo будет виден как старое значение в первом потоке.
#код
Очередной #дайджест по С++:
🤖 Circle может стать будущим C++
Один простой трюк, позволяющий освободить творческие способности в эволюции языка C++.
🤖 AgentBench
Комплексный тест для оценки LLM как агентов.
🤖 fuzzing
Учебники, примеры, обсуждения, исследовательские предложения и другие ресурсы, связанные с фаззингом.
🤖 Моделирование трубы в реальном времени
Создание полноценной симуляции.
🤖 Circle может стать будущим C++
Один простой трюк, позволяющий освободить творческие способности в эволюции языка C++.
🤖 AgentBench
Комплексный тест для оценки LLM как агентов.
🤖 fuzzing
Учебники, примеры, обсуждения, исследовательские предложения и другие ресурсы, связанные с фаззингом.
🤖 Моделирование трубы в реальном времени
Создание полноценной симуляции.
std::size
std::size — это функция из стандартной библиотеки C++, которая возвращает размер контейнера или массива.
Она определена в заголовочном файле, работает со всеми стандартными контейнерами (vector, deque, list, array и др.) и с массивами всех типов, позволяя получить размер контейнера или массива в runtime.
#код
std::size — это функция из стандартной библиотеки C++, которая возвращает размер контейнера или массива.
Она определена в заголовочном файле, работает со всеми стандартными контейнерами (vector, deque, list, array и др.) и с массивами всех типов, позволяя получить размер контейнера или массива в runtime.
#код
Изучите C++: введение для начинающих
В этом коротком посте автор знакомит читателей с основами C++ и помогает заложить прочную основу для начала пути в программировании.
Читать статью
В этом коротком посте автор знакомит читателей с основами C++ и помогает заложить прочную основу для начала пути в программировании.
Читать статью
🎓💼 ТОП-9 не самых очевидных компаний для стажировки в ИТ
Везде просят опыт работы... Но где его взять? Как раз об этом сейчас и расскажем!
🔗Читать статью
🔗Зеркало
Везде просят опыт работы... Но где его взять? Как раз об этом сейчас и расскажем!
🔗Читать статью
🔗Зеркало
Как тестировать закрытые методы?
Проверка закрытых методов в C++ может быть осуществлена путем написания тестовых случаев, которые используют публичные методы, которые в свою очередь вызывают закрытые методы. Этот подход называется "тестирование черного ящика" и позволяет тестировать функциональность закрытых методов, не раскрывая их реализацию.
#вопросы_с_собеседований
Проверка закрытых методов в C++ может быть осуществлена путем написания тестовых случаев, которые используют публичные методы, которые в свою очередь вызывают закрытые методы. Этот подход называется "тестирование черного ящика" и позволяет тестировать функциональность закрытых методов, не раскрывая их реализацию.
#вопросы_с_собеседований
Перегрузка операторов
Перегрузка операторов позволяет определить для объектов классов встроенные операторы, такие как +, -, * и т. д. Для определения оператора для объектов своего класса, необходимо определить функцию, название которой содержит слово operator и символ перегружаемого оператора.
В этом примере в классе Counter определен оператор сложения, цель которого сложить два объекта Counter. Текущий объект будет представлять левый операнд операции. Объект, который передается в функцию через параметр counter, будет представлять правый операнд операции.
#код
Перегрузка операторов позволяет определить для объектов классов встроенные операторы, такие как +, -, * и т. д. Для определения оператора для объектов своего класса, необходимо определить функцию, название которой содержит слово operator и символ перегружаемого оператора.
В этом примере в классе Counter определен оператор сложения, цель которого сложить два объекта Counter. Текущий объект будет представлять левый операнд операции. Объект, который передается в функцию через параметр counter, будет представлять правый операнд операции.
#код
Исследование различий между C++ и C: почему C++ преобладает
Оба языка известны своей эффективностью, универсальностью и необузданной мощью. Однако C++ постепенно одерживает верх во многих областях, что делает его более выгодным выбором для разработки современного программного обеспечения.
Читать статью
Оба языка известны своей эффективностью, универсальностью и необузданной мощью. Однако C++ постепенно одерживает верх во многих областях, что делает его более выгодным выбором для разработки современного программного обеспечения.
Читать статью
Libcurl
Libcurl — это библиотека для передачи файлов с множественным протоколом, которая поддерживает огромное множество протоколов. Также Libcurl поддерживает сертификаты SSL, HTTP POST, HTTP PUT, загрузку FTP, загрузку на основе форм HTTP и многое другое.
В этом примере создается объект CURL, затем вызывается curl_easy_init для его инициализации. Затем устанавливаются опции CURLOPT_URL и CURLOPT_WRITEFUNCTION с помощью curl_easy_setopt.
— CURLOPT_URL указывает URL-адрес для выполнения GET запроса.
— CURLOPT_WRITEFUNCTION указывает функцию обратного вызова для записи данных ответа.
Затем вызывается curl_easy_perform для выполнения запроса. После завершения запроса вызывается curl_easy_cleanup для очистки объекта CURL, а затем curl_global_cleanup для очистки глобальных ресурсов libcurl.
Результат выполнения этого кода — вывод содержимого страницы в стандартный вывод.
#код
Libcurl — это библиотека для передачи файлов с множественным протоколом, которая поддерживает огромное множество протоколов. Также Libcurl поддерживает сертификаты SSL, HTTP POST, HTTP PUT, загрузку FTP, загрузку на основе форм HTTP и многое другое.
В этом примере создается объект CURL, затем вызывается curl_easy_init для его инициализации. Затем устанавливаются опции CURLOPT_URL и CURLOPT_WRITEFUNCTION с помощью curl_easy_setopt.
— CURLOPT_URL указывает URL-адрес для выполнения GET запроса.
— CURLOPT_WRITEFUNCTION указывает функцию обратного вызова для записи данных ответа.
Затем вызывается curl_easy_perform для выполнения запроса. После завершения запроса вызывается curl_easy_cleanup для очистки объекта CURL, а затем curl_global_cleanup для очистки глобальных ресурсов libcurl.
Результат выполнения этого кода — вывод содержимого страницы в стандартный вывод.
#код
Очередной #дайджест по С++:
✍️ Создаем проект STM32 C++ FreeRTOS в vscode для очень маленьких
Пошаговое создание проекта для новичков.
✍️ Ошибка настолько проста, что программисты её не замечают
Об интересном случае обращения в техподдержку анализатора кода.
✍️ HOMEd: A почему «d»? Чтобы никто не догадался
Про умный дом и его возможности.
✍️ Написание компилятора C в 500 строк Python
Сложно ли это? Да, даже если отказаться от многих функций. Но, в то же время, это ужасно интересно, а результат оказался на удивление функциональным и несложным для понимания!
✍️ Создаем проект STM32 C++ FreeRTOS в vscode для очень маленьких
Пошаговое создание проекта для новичков.
✍️ Ошибка настолько проста, что программисты её не замечают
Об интересном случае обращения в техподдержку анализатора кода.
✍️ HOMEd: A почему «d»? Чтобы никто не догадался
Про умный дом и его возможности.
✍️ Написание компилятора C в 500 строк Python
Сложно ли это? Да, даже если отказаться от многих функций. Но, в то же время, это ужасно интересно, а результат оказался на удивление функциональным и несложным для понимания!
Какой фреймворк для работы изучали последний раз?
#интерактив
#интерактив
Сериализация
Сериализация — это процесс преобразования данных, таких как объекты, структуры или контейнеры, в последовательность байтов, чтобы их можно было сохранить или передать через сеть, а затем восстановить обратно в исходное состояние. Это позволяет сохранять состояние программы или обмениваться данными между разными программами или системами.
Сериализация имеет большое значение, например, когда вы хотите сохранить состояние вашего приложения для долгосрочного хранения или передать данные между клиентом и сервером в распределенной системе. Она позволяет избежать необходимости ручного форматирования данных для записи и их последующего разбора.
#код
Сериализация — это процесс преобразования данных, таких как объекты, структуры или контейнеры, в последовательность байтов, чтобы их можно было сохранить или передать через сеть, а затем восстановить обратно в исходное состояние. Это позволяет сохранять состояние программы или обмениваться данными между разными программами или системами.
Сериализация имеет большое значение, например, когда вы хотите сохранить состояние вашего приложения для долгосрочного хранения или передать данные между клиентом и сервером в распределенной системе. Она позволяет избежать необходимости ручного форматирования данных для записи и их последующего разбора.
#код
Как подсчитать количество элементов в std::list?
Чтобы подсчитать количество элементов в std::list, можно использовать следующие способы:
1. Вызвать метод size() самого списка. Он вернет количество элементов.
2. Проитерировать список циклом и считать элементы.
3. Воспользоваться алгоритмом std::distance, передав ему начало и конец списка.
4. Применить алгоритм std::count_if с условием, которое всегда истинно.
#вопросы_с_собеседований
Чтобы подсчитать количество элементов в std::list, можно использовать следующие способы:
1. Вызвать метод size() самого списка. Он вернет количество элементов.
2. Проитерировать список циклом и считать элементы.
3. Воспользоваться алгоритмом std::distance, передав ему начало и конец списка.
4. Применить алгоритм std::count_if с условием, которое всегда истинно.
#вопросы_с_собеседований
Forwarded from Библиотека шарписта | C#, F#, .NET, ASP.NET
⚒️ ТОП-27 плагинов для Visual Studio Code в 2023
Предлагаем список лучших расширений для VS Code в 2023 году: продуктивность, окрашивание сниппетов, контроль версий, форматирование, линтинг и отладка.
🔗Читать статью
🔗Зеркало
Предлагаем список лучших расширений для VS Code в 2023 году: продуктивность, окрашивание сниппетов, контроль версий, форматирование, линтинг и отладка.
🔗Читать статью
🔗Зеркало
Карл Окерблом: краткий обзор Трейси Профайлер
Карл кратко рассказывает о профилировании инструментов Tracy Profiler. Также он делится впечатлениями после внедрения его в работу; несколько приятных сюрпризов и неровностей на дороге, с которыми он столкнулся на своем пути.
Смотреть выступление
Карл кратко рассказывает о профилировании инструментов Tracy Profiler. Также он делится впечатлениями после внедрения его в работу; несколько приятных сюрпризов и неровностей на дороге, с которыми он столкнулся на своем пути.
Смотреть выступление
Что вы считаете самой большой своей неудачей за всю карьеру?
#интерактив
#интерактив