Создаем чат-бот для распознавания изображений на основе нейронной сети 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 позволяют расширять и изменять поведение вызываемых объектов без постоянного изменения самого вызываемого объекта.

Любая достаточно общая функциональность, которую можно «прикрепить» к поведению существующего класса или функции, является отличным примером использования декораторов. Сюда входит:

  • журналирование,
  • обеспечение контроля доступа и аутентификации,
  • инструментарий и функции управления временем,
  • ограничение скорости,
  • кэширование и многое другое.

Читать продолжение