cppcheck — это проект статического анализа с открытым исходным кодом, ориентированный в первую очередь на нахождение реальных ошибок в коде с минимальным количеством ложных срабатываний.
cppcheck перестраховывается, причём планка адекватности высока. Большинство проверок cppcheck по умолчанию не включает. Среди них следующие категории проверок, каждая из которых может включаться/выключаться независимо:
error — явные ошибки, которые анализатор считает критическими и обычно они приводят к багам (включено по умолчанию);
warning — предупреждения, здесь даются сообщения о небезопасном коде;
style — стилистические ошибки, сообщения появляются в случае неаккуратного кодирования (больше похоже на рекомендации);
performance — проблемы производительности, здесь cppcheck предлагает варианты, как сделать код быстрее (но это не всегда даёт прирост производительности);
portability — ошибки совместимости, обычно связано с различным поведением компиляторов или систем разной разрядности;
information — информационные сообщения, возникающие в ходе проверки (не связаны с ошибками в коде);
unusedFunction — попытка вычислить неиспользуемые функции (мёртвый код), не умеет работать в многопоточном режиме;
missingInclude — проверка на недостающий #include (например, используем random, а подключить stdlib.h забыли).
Включаются проверки параметром --enable, список категорий проверок перечисляется через запятую.
Существует ключевое слово all, которое включает все перечисленные проверки.
И это ещё не всё. Если ваша программа безошибочна с точки зрения анализатора, попробуйте запустить cppcheck с параметром --inconclusive. Данный режим действительно включает все возможные проверки, даже ошибки с малой вероятностью, которые cppcheck пропускает по умолчанию.
Примеры использования:
cppcheck перестраховывается, причём планка адекватности высока. Большинство проверок cppcheck по умолчанию не включает. Среди них следующие категории проверок, каждая из которых может включаться/выключаться независимо:
error — явные ошибки, которые анализатор считает критическими и обычно они приводят к багам (включено по умолчанию);
warning — предупреждения, здесь даются сообщения о небезопасном коде;
style — стилистические ошибки, сообщения появляются в случае неаккуратного кодирования (больше похоже на рекомендации);
performance — проблемы производительности, здесь cppcheck предлагает варианты, как сделать код быстрее (но это не всегда даёт прирост производительности);
portability — ошибки совместимости, обычно связано с различным поведением компиляторов или систем разной разрядности;
information — информационные сообщения, возникающие в ходе проверки (не связаны с ошибками в коде);
unusedFunction — попытка вычислить неиспользуемые функции (мёртвый код), не умеет работать в многопоточном режиме;
missingInclude — проверка на недостающий #include (например, используем random, а подключить stdlib.h забыли).
Включаются проверки параметром --enable, список категорий проверок перечисляется через запятую.
Существует ключевое слово all, которое включает все перечисленные проверки.
Примечание. Параметры -j и режим проверки unusedFunction несовместимы, поэтому -j выключит проверку unusedFunction, даже если она указана явно.
И это ещё не всё. Если ваша программа безошибочна с точки зрения анализатора, попробуйте запустить cppcheck с параметром --inconclusive. Данный режим действительно включает все возможные проверки, даже ошибки с малой вероятностью, которые cppcheck пропускает по умолчанию.
Примеры использования:
cppcheck -q -j4 --enable=warning,style,performance,portability ./source
cppcheck -q --enable=all ./source
cppcheck -q --enable=all --inconclusive ./source
Решил ввести новую рубрику кибердек. Буду постить разные прикольные кибердеки
#CYBERDECK • PELICAN 1150
Источник
GitHub
#CYBERDECK • PELICAN 1150
От автора: Этот проект - моя первая попытка создать портативную cyberdeck с использованием Raspberry Pi 4 и корпуса Pelican 1150. Она спроектирована как полностью автономная, с водонепроницаемыми портами, встроенным аккумулятором и охлаждающими вентиляторами. Моим основным фокусом было создание изящной, функциональной системы для запуска различных сценариев и задач, таких как атаки BadUSB, при этом сохраняя все компактным и переносимым. В будущем я планирую добавить инструкции по сборке и электрические схемы.
7-дюймовый дисплей: встроенный для портативного использования
Работает под управлением Kali Linux: идеально подходит для задач кибербезопасности
Активная система охлаждения: 1x 30-миллиметровый вентилятор и 2x 18-миллиметровых вентилятора обеспечивают поток воздуха при открытом корпусе
3 порта USB: 2 внутренних и 1 внешний для периферийных устройств
Устройство чтения SD-карт: встроено для удобного доступа к хранилищу данных
Выход HDMI: Внешний порт для подключения к дисплею большего размера
Зарядка через USB-C: Удобный источник питания как для Pi, так и для экрана
Порт Cat5 Ethernet: Подключение к внешней сети для проводного доступа
Аудиоразъем: для подключения наушников или внешнего аудиосигнала
Индикаторы состояния:
Индикатор зарядки
Включение / выключение Raspberry Pi
Включение / выключение экрана
3 дополнительных настраиваемых светодиода
Переключатель питания экрана: Автоматически выключает экран при закрытии корпуса
Клавиатура: Встроенная для удобства использования
Отделения для хранения: Вмещают SD-карты и USB-накопители под клавиатурой
Встроенный аккумулятор: обеспечивает питание как Raspberry Pi, так и экрана для портативной работы
Водонепроницаемая конструкция: Герметична и защищена в закрытом состоянии
Источник
GitHub
🔥3 2
🌐 Настраиваем сетевой мост в Linux
Сетевой мост – представляет собой тип работы интерфейсов сетевого устройства, который объединяет сети на канальном уровне, позволяя коммуницировать узлам и конечным точкам между объединенными интерфейсами.
Принцип работы заключается, в том что создается на устройстве новое логическое, затем подключаются два и более физических или виртуальных интерфейсов.
Затем пакеты свободно проходят в две стороны, образуя единую канальную среду
🔗 Читать подробнее на Serverspace
Сетевой мост – представляет собой тип работы интерфейсов сетевого устройства, который объединяет сети на канальном уровне, позволяя коммуницировать узлам и конечным точкам между объединенными интерфейсами.
Принцип работы заключается, в том что создается на устройстве новое логическое, затем подключаются два и более физических или виртуальных интерфейсов.
Затем пакеты свободно проходят в две стороны, образуя единую канальную среду
🔗 Читать подробнее на Serverspace
Подборка SQL тренажеров для практики
Делимся подборкой тренажеров по SQL, которые помогут закрепить SQL на практике:
1. sql-academy.org
2. sql-ex.ru
3. schoolsw3.com
4. SQL Fiddle
5. sqltest.online
6. Oracle LiveSQL
7. stratascratch.com
8. sql-practice.com
9. HackerRank
10. sqlzoo.net
#SQL #тренажеры #полезное
Делимся подборкой тренажеров по SQL, которые помогут закрепить SQL на практике:
1. sql-academy.org
2. sql-ex.ru
3. schoolsw3.com
4. SQL Fiddle
5. sqltest.online
6. Oracle LiveSQL
7. stratascratch.com
8. sql-practice.com
9. HackerRank
10. sqlzoo.net
#SQL #тренажеры #полезное
👍1 1
Путешествие во времени...
Anonymous Poll
19%
Никак не возможно
19%
Возможно, но только в прошлое, без влияния, наблюдение
6%
Возможно, но только в будущее, без влияния, наблюдение
19%
Возможно и в прошлое и в будущее, но нельзя будет влиять
19%
Возможно и в прошлое и в будущее и влиять можно будет
0%
Возможно, но только в прошлое, с влиянием
19%
Возможно, но только в будущее, с влиянием
👍2
Своя СУБД за 3 недели.
Конечный продукт должен обладать следующими свойствами:
#статья #полезное #SQL #СУБД #проекты #велосипедостроение
Нужно всего-лишь каждый день немного времени уделять архитектуре; и всё остальное время вкалывать на результат, печатая и перепечатывая сотни строк кода.
По закону Мерфи, если есть более одного проекта на выбор — я возьмусь за самый сложный из предложенных. Так случилось и с последним заданием курса о системах управления базами данных (СУБД).
Конечный продукт должен обладать следующими свойствами:
хранит базу в бинарном формате в едином файле
DDL: поддерживает три типа данных: Integer, Float и Varchar(N). Для упрощения, все они фиксированной длины.
DML: поддерживает базовые SQL операции:
INSERT
UPDATE
DELETE
SELECT с WHERE и JOIN. С каким именно JOIN — указано не было, поэтому на всякий случай мы сделали и CROSS, и INNER
выдерживает 100'000
#статья #полезное #SQL #СУБД #проекты #велосипедостроение
🔥3👍1
#HEX • IT
В мире программирования создание собственных библиотек — это не просто возможность пополнения своего портфолио или способ структурировать код, а настоящий акт творческого самовыражения (и иногда велосипедостроения). Каждый разработчик иногда использовал в…
Давайте наберем до вторника +30 на этой статье)
👍5
Poetry — это инструмент для управления зависимостями и сборкой пакетов в Python. А также при помощи Poetry очень легко опубликовать свою библиотеку на PyPi!
В Poetry представлен полный набор инструментов, которые могут понадобиться для детерминированного управления проектами на Python. В том числе, сборка пакетов, поддержка разных версий языка, тестирование и развертывание проектов.
Все началось с того, что создателю Poetry Себастьену Юстасу потребовался единый инструмент для управления проектами от начала до конца, надежный и интуитивно понятный, который бы мог использоваться и в рамках сообщества. Одного лишь менеджера зависимостей было недостаточно, чтобы управлять запуском тестов, процессом развертывания и всем созависимым окружением. Этот функционал находится за гранью возможностей обычных пакетных менеджеров, таких как Pip или Conda. Так появился Python Poetry.
Установить poetry можно через pipx:
Итак, давайте создадим проект при помощи poetry и установим зависимости:
В Poetry представлен полный набор инструментов, которые могут понадобиться для детерминированного управления проектами на Python. В том числе, сборка пакетов, поддержка разных версий языка, тестирование и развертывание проектов.
Все началось с того, что создателю Poetry Себастьену Юстасу потребовался единый инструмент для управления проектами от начала до конца, надежный и интуитивно понятный, который бы мог использоваться и в рамках сообщества. Одного лишь менеджера зависимостей было недостаточно, чтобы управлять запуском тестов, процессом развертывания и всем созависимым окружением. Этот функционал находится за гранью возможностей обычных пакетных менеджеров, таких как Pip или Conda. Так появился Python Poetry.
Установить poetry можно через pipx:
pipx install poetry и через pip: pip install poetry --break-system-requirements. Это установит poetry глобально во всю систему.Итак, давайте создадим проект при помощи poetry и установим зависимости:
poetry new <имя_проекта>
cd <имя_проекта>
poetry add <зависимости>
poetry shell # входим в виртуальное окружение
20👍4❤1🔥1 1
#HEX • IT
В мире программирования создание собственных библиотек — это не просто возможность пополнения своего портфолио или способ структурировать код, а настоящий акт творческого самовыражения (и иногда велосипедостроения). Каждый разработчик иногда использовал в…
Извиняюсь что выклянчиваю, но давайте добьем рейтинг статьи до 30(
20👍5
DevOps-инженер - специалист, который внедряет методологию эффективной совместной работы нескольких сфер (такие, как серверное программирование, QA и администрирование серверов) в процесс работы. Можно сказать, что эта специальность абстрактная, т.к. нет четко обозначенных границ знаний.
DevOps-инженер, косвенно или нет, отвечает за следующие этапы работы:
Этап планирования. Какая будет архитектура проекта, как настроить его масштабируемость, определение метрик для оценки эффективности.
Следующим шагом является настройка и администрирование серверов. Эта часть работы включает в себя развертывание и конфигурирование серверной инфраструктуры, установка и настройка необходимого системного ПО и самой системы, а также обеспечение безопасного вывода в продакшен и проверка среды.
Автоматизация CI/CD. Continuous Integration/Continuous Delivery - это одна из практик в DevOps, подразумевающая непрерывную интеграцию и доставку. Ее цели - обеспечение последовательного и автоматизированного способа сборки, упаковки и тестирования продуктов или приложений.
Тестирование и мониторинг. Данный этап представляет собой разработку систем мониторинга производительности и доступности, а также всевозможное тестирование.
Взаимодействие с обратной связью от пользователя. Цель этапа - внедрять улучшения в проект.
Решение других задач, которые позволяют анализировать эффективность разных рабочих процессов, наладить систему работы других сотрудников сферы IT.
Но почему разработчики разных этапов не могут просто работать отдельно, а после синхронизировать? Проблема возникает в том, что у каждого свое окружение, и то что работает у одних, может не работать у других. Все тратят время на решение багов, проблем совместимости и синхронизацию компонентов. Здесь и нужна профессия DevOps-инженера - тот, кто поможет всем общаться, настроить совместную работу.
Конечно данный план - идеальный проект, но таких, к сожалению, мало. Есть многочисленные проекты, где мониторинг отваливается, процесс обновления громоздкий, этап планирования был пропущен или сервера используют потенциально уязвимое ПО. И тогда задача DevOps-инженера - решить все (или хотя бы часть) существующих проблем, сделать так, чтобы все работало, и непрерывно работало и обновлялось.
Как говорит старая английская пословица - "Time is money", время - деньги. В контексте бизнеса и IT инфраструктуры это правда. Сколько бизнес потеряет денег, если вдруг, из-за плохого тестирования или CI/CD упадет сервер? DevOps-инженер как раз и нужен для решения таких проблем.
DevOps-инженер, косвенно или нет, отвечает за следующие этапы работы:
Этап планирования. Какая будет архитектура проекта, как настроить его масштабируемость, определение метрик для оценки эффективности.
Следующим шагом является настройка и администрирование серверов. Эта часть работы включает в себя развертывание и конфигурирование серверной инфраструктуры, установка и настройка необходимого системного ПО и самой системы, а также обеспечение безопасного вывода в продакшен и проверка среды.
Автоматизация CI/CD. Continuous Integration/Continuous Delivery - это одна из практик в DevOps, подразумевающая непрерывную интеграцию и доставку. Ее цели - обеспечение последовательного и автоматизированного способа сборки, упаковки и тестирования продуктов или приложений.
Тестирование и мониторинг. Данный этап представляет собой разработку систем мониторинга производительности и доступности, а также всевозможное тестирование.
Взаимодействие с обратной связью от пользователя. Цель этапа - внедрять улучшения в проект.
Решение других задач, которые позволяют анализировать эффективность разных рабочих процессов, наладить систему работы других сотрудников сферы IT.
Но почему разработчики разных этапов не могут просто работать отдельно, а после синхронизировать? Проблема возникает в том, что у каждого свое окружение, и то что работает у одних, может не работать у других. Все тратят время на решение багов, проблем совместимости и синхронизацию компонентов. Здесь и нужна профессия DevOps-инженера - тот, кто поможет всем общаться, настроить совместную работу.
Конечно данный план - идеальный проект, но таких, к сожалению, мало. Есть многочисленные проекты, где мониторинг отваливается, процесс обновления громоздкий, этап планирования был пропущен или сервера используют потенциально уязвимое ПО. И тогда задача DevOps-инженера - решить все (или хотя бы часть) существующих проблем, сделать так, чтобы все работало, и непрерывно работало и обновлялось.
Как говорит старая английская пословица - "Time is money", время - деньги. В контексте бизнеса и IT инфраструктуры это правда. Сколько бизнес потеряет денег, если вдруг, из-за плохого тестирования или CI/CD упадет сервер? DevOps-инженер как раз и нужен для решения таких проблем.
10 3👍2 1
Инженер Red Hat Никита Попов теперь ведущий разработчик LLVM
После единогласного одобрения на прошлой неделе в LLVM Git он был назначен официальным ведущим разработчиком этого критически важного стека компиляторов с открытым исходным кодом. В Red Hat он работал над LLVM, Clang и Rust. Никита Попов также был одним из основных разработчиков PHP.
Источник
После единогласного одобрения на прошлой неделе в LLVM Git он был назначен официальным ведущим разработчиком этого критически важного стека компиляторов с открытым исходным кодом. В Red Hat он работал над LLVM, Clang и Rust. Никита Попов также был одним из основных разработчиков PHP.
Источник
👍2 2 2❤1🔥1
Эпично: «компьютерных мастеров рядом с вами» ногами выпинали из квартиры потенциальной жертвы.
Самый сок: мошенники забыли свой жёсткий диск на котором были мануалы по обману, вирусы и батники, ломающие нормальную работу Windows. Примечательно, что почти все их гнилые методы работают на смене даты.
Идиоты специально впаривали трояны и даже форматировали диски, чтобы втюхать свои услуги за нереальные деньги — только установка Офиса обошлась бы почти в ДЕСЯТКУ.
Предупредите близких.
Источник
Самый сок: мошенники забыли свой жёсткий диск на котором были мануалы по обману, вирусы и батники, ломающие нормальную работу Windows. Примечательно, что почти все их гнилые методы работают на смене даты.
Идиоты специально впаривали трояны и даже форматировали диски, чтобы втюхать свои услуги за нереальные деньги — только установка Офиса обошлась бы почти в ДЕСЯТКУ.
Предупредите близких.
Источник