Сегодня рассмотрим библиотеку Cereal в C++, которая позволяет сохранять и загружать состояние объектов, не теряя производительности.
Cereal — это заголовочнаябиблиотека для C++, предназначенная для сериализацииданных. Она поддерживает XML и JSON. Помимо этого поддерживает практически все стандартные типы данных в C++ и имеет инструменты для работы с пользовательскими типами. В отличие от, например, библиотек Boost, Cereal не требует сложных настроек и имеет интуитивно понятный синтаксис, знакомый юзерам Boost.
адаптер - предоставляет API, которое вызывается из кода. Их всего 3 - SL4J, JCL (Apache Common Logging) и JBoss Logging. Самый распространенный и рекомендуемый - SLF4J
bridge - нужен, когда какая-то библиотека использует не тот адаптер, что мы хотим. По сути адаптер на адаптер, который эмулирует API, вызываемое из кода, и пробрасывает вызовы в нужный адаптер, как правило SLF4J. Понятно, что когда у нас есть адаптер на адаптер, есть риск бесконечной рекурсии. Про это надо помнить)
движок логгера - компонента, которая пишет логи. Примеры: log4j, log4j2, logback, JUL\JDK (встроенный в JDK)
фильтры и конверторы - позволяют отфильтровать или преобразовать сообщения на клиенте
Плюс 3 хороших совета:
соблюдать гигиену classpath - чистить его от лишних библиотек
логи могут стать основой мониторинга. Мы отбрасываем специальным образом размеченную запись в лог, которая после обработки становится событием мониторинга
не добавлять в свои библиотеки как зависимость движок логгера. Пусть его выберет потребитель, а не разбирается с транзитивными зависимостями
И 2 полезные утилиты - миграторы на logback и SLF4J с альтернативных библиотек.
Всем привет! Мы продолжаем нашу серию статей по созданию собственного SSO. В этой статье мы увидим итоговый проект и разберём самые интересные решения из него. Подумаем над безопасностью приложения и настроим защиту от XSS и CSRF атак, а также изучим разные Security Headers. В заключение статьи мы создадим собственый Grant Type.
Павел Дуров поделился впечатлениями о Киргизии и назвал эту страну скрытой жемчужиной Центральной Азии.
Мне понравились люди и природа Кыргызстана — настоящей жемчужины Центральной Азии. Погода была отличная, комаров не было, поэтому мы много катались на лошадях в горах и вокруг озера Иссык-Куль. Я заметил, что Кыргызстан развивается очень быстро, создавая ценную инфраструктуру по всей стране
Более половины населения страны ежемесячно пользуется Telegram, и только за последние четыре месяца популярность Telegram выросла на 30%. Находясь там, мы встретились с местными телекоммуникационными лидерами и обсудили пути улучшения работы кыргызстанских пользователей Telegram
Спасибо тебе, Кыргызстан, — мы скоро вернёмся. Твоё гостеприимство вдохновляет меня на мои будущие поездки по прекрасной Центральной Азии.
Во время своего визита Дуров встретился с местными телекоммуникационными гигантами, чтобы обсудить возможности улучшения работы Telegram для киргизских пользователей.
Дуров выразил благодарность Киргизии за гостеприимство и заявил, что планирует вернуться в эту страну в ближайшее время. Он также отметил, что его впечатления от поездки вдохновят его на новые путешествия по Центральной Азии.
Заголовок может выглядеть странно, но тема статьи — как раз выбор сломанного ноутбука для дальнейшего ремонта. Этот материал — продолжение цикла о ремонтах. Надеюсь, он окажется полезным для читателей.
В статье излагаю свой опыт выбора ноутбуков на онлайн-барахолках. Но не рабочих устройств, а сломанных. Расскажу о том, как выбираю такие девайсы. Основная цель — купить дешево, чтобы починить и получить в свое распоряжение дорогое устройство. Его можно использовать самому, подарить или продать. Тут уж выбирайте самостоятельно. Что же — поехали.
Что касается абсолютного большинства устройств, поддерживаемых в ядре Linux, от вас не требуется почти никакого вмешательства, чтобы пустить их в работу. Пожалуй, устройство потребуется включить (например, при помощи регулятора), отменить команду сброса или обратиться к нескольким конфигурационным регистрам. Но среди устройств есть и достаточно сложные; чтобы в полной мере использовать имеющиеся в них функции или добавлять собственные, для таких устройств требуется специализированная прошивка. Некоторые подобные устройства изначально рассчитаны на подключение заранее запрограммированной персистентной памяти, но в других предусматривается механизм, получающий им подтягивать прошивку из какого-либо приложения. Есть даже такие устройства, в которых одновременно предоставляются обе эти возможности.
В последнее время в сети появилось множество роликов, в которых обсуждается - имеет искусственный интеллект (ИИ) сознание или нет? Но довольно часто в них даже не пытаются дать определение «сознанию» и более чётко указать критерии наличия «сознания» у ИИ.
Моё мнение – ИИ сейчас не имеет сознания, но может его приобрести. В этой публикации я опишу, при каких условиях сознание у ИИ может возникнуть и как это можно будет проверить.
С помощью мониторинга счетчиков воды, электричества, газа (если таковой имеется) можно создать систему оповещения о несчастных случаях с большой вероятностью. Причем речь идет так о человеческих жизнях, так и о бытовых чрезвычайных ситуациях.
Алгоритм очень простой: нужно замечать случаи, когда расход ресурсов превышает средний статистический. Пример: В доме бабушки Марфы из соседней квартиры уже два часа подряд течет вода. Вряд ли она столько моется в душе или моет посуду. Скорее всего, у неё в доме прорвало воду (хотя её может прорвать до счетчика, тогда утечки мы не увидим) либо ей стало плохо и она не закрыла кран. Аналогичные случаи про газ и свет. Вряд ли вы будете готовить на плите несколько часов или не выключать свет, телевизор, прочие электроприборы больше 12 часов, для примера.
Сегодня рассажем о модуле, который упрощает автоматизацию сетевых устройств — Netmiko. Если вы, как и мы, когда-то пытались автоматизировать конфигурации и управление сетью через SSH, то вы знаете, насколько это может быть сложным процессом. И тут на сцену помогает Netmiko.
Netmiko — это обертка над библиотекой Paramiko, разработанная для сетевых инженеров. Она упрощает работу с SSH-соединениями и добавляет ряд методов и интерфейсов для взаимодействия с сетевыми устройствами.
Этот модуль поддерживает большой спектр сетевых устройств — от Cisco и Juniper до Arista и HP. Всё, что нужно, это определить параметры устройства в виде словаря, и Netmiko позаботится обо всем остальном.
Эта статья посвящена использованию библиотеки для профилирования методов в приложениях Spring Boot. Она предоставляет механизм для мониторинга времени выполнения методов, используя аннотацию @ActuatorProfiling и Spring Boot Actuator для экспонирования данных профилирования через настраиваемые конечные точки (эндпоинты).
Профилирующее приложение предназначено для помощи разработчикам в мониторинге и анализе времени выполнения методов, аннотацией @ActuatorProfiling. Данные профилирования экспонируются через Spring Boot Actuator.
Особенности
• Профилирование времени выполнения методов.
• Настраиваемые параметры профилирования.
• Информация получения данных профилирования в actuator.
• Потокобезопасное управление данными профилирования.
Алгоритм backpropagation, или обратное распространение ошибки, является некой базой для тренировки многослойных перцептронов и других типов искусственных нейронных сетей. Этот алгоритм впервые был предложен Полем Вербосом в 1974 году, а позже популяризирован Дэвидом Румельхартом, Джеффри Хинтоном и Рональдом Уильямсом в 1986 году.
На рынке игровых движков полно вариантов на любой вкус и цвет, начиная от Open Source решений и заканчивая огромными коммерческими комбайнами. Большое количество игровых движков поддерживают сборку проекта для веб-платформ. Но от движка к движку различается итоговый размер собранного проекта. И это может влиять очень критично - не все платформы дистрибуции готовы хостить веб-проекты сами, а если и готовы, то они часто имеют ограничение на размер проекта.
В связи с этим решил посмотреть, а что по размеру сборок у основных игроков на рынке?
Тестовая сцена влючает в себя лого Godot 128x128 32 бита, размер 4,209 килобайт. Результаты сборки при максимальных возможных оптимизациях на уровне движка: 1. Godot - 18.7 мегабайта. Остались включенными только модули GDScript, OpenGL, Brotli. Для полноценной работы маловато, но терпимо. Снизить ниже уже в разы сложнее. 2. Unity - 8.42 мегабайта. Потенциально можно дойти до 3-5 мегабайт. 3. Defold - 2.62 мегабайта. Размер сборок мониторится, графики правдоподобные. 4. Game Maker - 2.32 мегабайта. Ужать дальше можно только с сжатием контента.
Сюда не вошли: 1. Unreal Engine. Последняя версия с поддержкой web-платформ была 4.24, дальше только в виде отдельного расширения. 2. Нативные для браузеров движки на JS/TS, коих множество. 3. Прочие решения, которые не подошли мне по разным параметрам: Phaser, PlayCanvas, Construct, GDevelop и другие.
В прошлой части я разбирался с транспортным ключевым контейнером от КриптоПро (он же PFX, PKCS12, P12). В этой статье пойдёт речь о собственном формате ключевого контейнера КриптоПро (те самые 6 файлов .key)
В этой статье ты найдешь детальную roadmap, которая поможет тебе прокачать навыки, получить ценные знания и взлететь на вершину карьерной лестницы в сфере системного анализа.
Не упусти шанс стать экспертом! Узнавай новое уже сегодня и открой для себя мир успешной карьеры в IT!
22 июня 2024 года состоялся релиз открытого мультиплатформенного (поддерживает Linux, Windows и OS X 10.9+) менеджера буфера обмена с функциями редактирования и создания скриптов CopyQ 9.0. Исходный код проекта написан на языках C++ и C и опубликован на GitHub под лицензией GNU General Public License v3.0.
Если вы не читали мою предыдущую статью, то и не читайте. Статья получилась короткая, скомканная, и, самое главное, не отвечала на вопрос, как именно ORM может помочь в повседневной работе программиста.
Сегодня попробую восполнить этот пробел и рассказать, как упрощается написание логики на примере одной экстремальной ORM. В которой базы данных не существует.
Если позволите, начну с небольшого исторического экскурса на 30 секунд, о том, как эта система появилась.
В какой-то момент моей карьеры меня перестало радовать ПО которое я разрабатывал.
Больше всего мне нравилось работать с низкоуровневыми деталями и сложными алгоритмами. Но после перехода на пользовательские приложения эта часть работы почти исчезла. Теперь программирование казалось мне просто перемещением данных из одного места в другое с помощью уже готовых библиотек и инструментов. Знания, которые я получил раньше о программном обеспечении, уже не были такими полезными.