Создаем чат-бот для распознавания изображений на основе нейронной сети MobileNetV2
В этой статье рассмотрим решение задачи многоклассовой класификации на основе датасета овощей и фруктов с помощью сверточной нейронной сети архитектуры MobileNetV2. А после этого еще создадим чат-бота, который будет классифицировать эти изображения. Перейти
Три причины передавать std::string_view по значению
Передавать std::string_view
по значению – идиоматично. Давайте разберемся, почему.
Создаем байт-код для JVM без компилятора
Виртуальная машина Java использует концепцию промежуточного байт-кода для обеспечения переносимости между операционными системами и аппаратными платформами. Использование байт-кода позволяет отделить компилятор от среды выполнения и выполнять компиляцию с разных языков программирования для исполнения на JVM.
В этой статье мы разберемся с внутренней организацией class-файлов и байт-кода в них и научимся работать с фреймворком ASM для исследования и программной генерации байт-кода для динамического определения новых классов или их компиляции из других языков программирования. Продолжение
Практическое DDD. Часть 1: Создание правильных основ
«Закон Конвея» утверждает, что для функционирования программного модуля несколько авторов должны часто общаться друг с другом. Поэтому структура программного интерфейса системы будет отражать социальные границы организации, которая ее создала. Для достижения быстроты, автономии и влияния на бизнес мы оптимизируем работу, обеспечивая возможность распределения командной ответственности за архитектурные компоненты.
Чтобы достичь всего этого, нам необходимо согласование между командами, флитами (группа R&D), а иногда и между R&D. Компания Augury решила создать новую персону в каждой R&D: архитектор. Читать далее
Разбор бинарных форматов. Часть 1
Одна из самых сложных и интересных задач, с которыми сталкивается реверс инженер — это анализ бинарных файлов. Зачастую это может быть просто уже известный формат, и интерес с точки зрения анализа здесь появляется в тот момент, когда нужно написать свой просмотрщик и/или сделать более наглядной структуру файла. В данной статье попробуем проанализировать несколько бинарных файлов. Перейти к статье
Многоязычность на Kotlin-бэкэнде
Kotlin часто ассоциируется с мобильной разработкой для Android и это неудивительно, учитывая, что он принес множество необходимых и удобных языковых конструкций и кооперативной многозадачности, при этом сохраняя совместимость на уровне байт-кода с ранними версиями JVM. Но применимость языка существенно выше, и имеющиеся библиотеки позволяют создавать обычные приложения, а также код для бэкэнда c подключениям к БД, кэшам, очередям сообщений и т.д.
При этом, если для мобильной разработки проблем с поддержкой многоязычных сообщений не возникает, то для бэкэнда это становится нетривиальной задачей. В этой статье мы обсудим несколько подходов для создания бэкэнда с поддержкой нескольких языков. Читать полностью
Полезные методы работы с данными в Pandas. Часть 1
В статье сосредоточимся на изучении некоторых полезных, но менее известных методов работы с данными в Pandas, которые могут значительно повысить вашу эффективность при анализе и обработке данных. Мы рассмотрим различные функции и техники для таких задач, как разделение данных на интервалы, квантильное разделение, применение скользящих окон для вычислений, смещение данных для временных рядов, преобразование вложенных структур данных, нормализация сложных JSON-структур и управление многоуровневыми индексами при работе с DataFrame и Series. Читать
Декораторы Python: пошаговое руководство
Понимание декораторов является важной вехой для любого программиста Python. Декораторы в Python позволяют расширять и изменять поведение вызываемых объектов без постоянного изменения самого вызываемого объекта.
Любая достаточно общая функциональность, которую можно «прикрепить» к поведению существующего класса или функции, является отличным примером использования декораторов. Сюда входит:
- журналирование,
- обеспечение контроля доступа и аутентификации,
- инструментарий и функции управления временем,
- ограничение скорости,
- кэширование и многое другое.