RSS DZone.com Заметка

RSS DZone.com

DZone - это комплексная онлайн-платформа, посвященная различным аспектам технологий и программирования. Сайт предоставляет обширную информацию о различных языках программирования, технологиях, фреймворках и инструментах. Среди основных возможностей и ресурсов сайта - новости и статьи о последних тенденциях и обновлениях в технологическом секторе, различные ресурсы и учебники для обучения различным навыкам программирования, а также сообщество, где пользователи могут общаться друг с другом и делиться своим опытом и знаниями. Кроме того, DZone предлагает объявления о вакансиях для технических специалистов, являясь полезным ресурсом для тех, кто интересуется технологиями и программированием.

Трэд заметок

Это был день, когда один из наших потоков примирения начал выдавать NullPointerExceptions в продакшене. Исправление, как только мы его нашли, состояло из двух строк. Поиск этих двух строк занял почти шесть часов. Три инженера и бесконечный поиск по логам. Отладка интеграционного приложения с JSF UI, которое предшествует большинству библиотек, которые мы сегодня принимаем как должное. Никаких современных API не было предоставлено. Никакой четкой границы сервиса для изоляции проблемы. Просто цепочка устаревших точек интеграции, которые требовали от кого-то держать полную ментальную карту системы в голове, чтобы понять, что и где ломается. Через шесть месяцев активного использования генеративного ИИ (GenAI) в разработке программного обеспечения я постоянно возвращаюсь к этим продакшн-багам. Они по-прежнему кажутся нормой, а не исключением.
Наиболее эффективный способ представить эту идею — начать с проблемы, с которой сталкиваются архитекторы: ИИ трансформировал ландшафт персистентности. Корпоративные приложения когда-то строились почти исключительно на реляционных базах данных, что делало JPA краеугольным камнем Jakarta EE. Сегодня современные системы используют комбинацию реляционных баз данных, документо-ориентированных хранилищ, кэшей, графовых движков и, во все большей степени, векторных баз данных, которые поддерживают семантический поиск, генерацию с дополненной выборкой (RAG) и приложения на базе ИИ. Полиглотная персистентность теперь является отраслевым стандартом. В то время как Jakarta EE стандартизировала реляционную персистентность через JPA, ей по-прежнему не хватает нейтрального для поставщиков стандарта для нереляционной персистентности. Этот пробел заставляет разработчиков полагаться на разрозненные, проприетарные решения, создавая препятствия для переносимости, производительности и инноваций.
Длительные, распределенные бизнес-процессы часто требуют тщательной координации, управления состоянием и обработки ошибок. Temporal предлагает подход к надежным рабочим процессам, основанный на коде: разработчики пишут обычный код для оркестрации, а сервис Temporal сохраняет состояние, повторяет неудачные задачи и возобновляет выполнение после сбоев. Это смещает фокус с технических деталей (очереди, повторные попытки, тайм-ауты) на логику предметной области, но также способствует повторному использованию проверенных шаблонов. Сообщество Temporal и документация выделяют несколько шаблонов оркестрации — например, саги, конечные автоматы/акторы, стратегии опроса, веерное распределение/сбор (fan-out/fan-in) и шаблоны версионирования — которые решают повторяющиеся проблемы при проектировании рабочих процессов. В этой статье рассматриваются эти шаблоны, объясняется, когда и как их использовать, с краткими фрагментами кода для иллюстрации их реализации в Temporal.
Я провел почти десять лет, создавая продукты для защиты данных для глобальных предприятий. DLP в облаке, CASB, SSPM, поведенческие угрозы, безопасность доступа к ИИ, ISPM и т. д. Это те вещи, которые находятся между пользователем, агентом или приложением и конфиденциальными данными, которые никто не хочет видеть не там, где следует. Каждый разговор, который у меня был с архитектором безопасности клиента в этом году, в конечном итоге сводился к одному и тому же вопросу. Ландшафт угроз явно изменился. Что это значит для существующих у нас средств контроля? Эта статья представляет собой анализ, которым я делился с архитекторами безопасности в различных отраслях, которые оценивают, как должны развиваться их программы защиты данных. Он основан на общедоступной документации, реальных изменениях для корпоративной безопасности данных и на том, куда бы я направил следующий доллар инвестиций, основываясь на десятилетнем опыте создания этих продуктов в масштабе.
Это третье продолжение к посту о релизе в пятницу. Субботний пост был о том, как вы итерируете; вчерашний — о новых API платформы в ядре; сегодняшний — о наборе компонентов, которые меняют способ написания структурных частей приложения. Компоненты включают генератор клиентов OpenAPI, ORM для SQLite, мапперы JSON и XML, привязку компонентов с валидацией, транскодеры SVG и Lottie во время сборки, а также декларативный маршрутизатор с глубокими ссылками. Все это работает на едином конвейере генерации кода во время сборки: проход плагина Maven, который читает аннотации или декларативные исходные файлы во время сборки и генерирует типизированный Java-код, который компилируется в ваш бинарный файл. Никакого отражения, никакого загрузчика сервисов, никакого Class.forName. Раздел "Как это работает" в конце этого поста описывает механику генерации кода после того, как вы увидите, что он обеспечивает.
Агентная инженерия становится по-настоящему интересной, когда она выходит за рамки панелей мониторинга и оповещений и начинает действовать. Одно из самых очевидных применений — реагирование на инциденты. Вместо того чтобы будить кого-то в 2 часа ночи, чтобы ответить на простые вопросы, я могу создать систему, которая понимает, что сломалось, кто за это отвечает, что недавно изменилось, каковы зависимости и можно ли устранить проблему автоматически. Именно это я и настроил, используя Port в качестве слоя контекста и Datadog в качестве слоя мониторинга и трассировки. Datadog сообщает мне, что что-то не так. Port говорит мне, что это означает в рамках организации. Как только эти два компонента будут связаны автоматизацией, я получу практический пример работы агентной инженерии: инциденты могут быть расследованы, обогащены контекстом, автоматически устранены, когда это возможно, или переданы соответствующей команде с нужными деталями.
Этот пост является продолжением предыдущего поста о выпуске и охватывает изменения, влияющие на процесс итерации при работе с приложением Codename One. Два основных изменения — это отладка на устройстве и стандартный JUnit 5 для симулятора JavaSE. Отладка на устройстве позволяет рассматривать Java как Java на реальном устройстве iPhone или Android. Codename One всегда поддерживал отладку на устройстве, но с ограничениями, такими как невозможность установить точку останова в коде Java и проверять поля Java. Ранее отладка приложения iOS требовала Mac и Xcode, поскольку это был единственный отладчик, который понимал бинарный файл. Шаг преобразования между кодом Java и C, производимый ParparVM, затруднял отладку кода Java на устройстве. Новая функция отладки на устройстве позволяет устанавливать точки останова в коде Java и проверять поля Java на реальном устройстве. Эта функция долгожданна и является значительным улучшением для разработчиков. Пост сосредоточен на подробном объяснении этой новой функции, поскольку это самое сложное и значительное изменение. Возможность отлаживать код Java непосредственно на устройстве значительно улучшит процесс разработки приложений Codename One.
В последние годы создание современных приложений изменилось по сравнению с тем, что наблюдалось исторически. Обычно в прошлом системы разрабатывались в виде единого, большого блока кода (называемого монолитным дизайном) и довольно хорошо работали для небольших приложений, но со временем, по мере того как они становились больше и сложнее, этот метод написания программного обеспечения становился скорее препятствием для приложений, поскольку они требовали больше пользователей и увеличения скорости. Теперь компаниям необходимо, чтобы их приложения могли быстро расти, быстро адаптироваться к изменениям и поддерживать миллионы пользователей без какого-либо влияния на производительность, и именно здесь архитектура микросервисов становится столь актуальной. Архитектура микросервисов стала способом проектирования масштабируемых приложений, потому что приложения могут быть разбиты на более мелкие, отдельные сервисы, которые могут работать независимо друг от друга.
Аналитические конвейеры, как правило, масштабируются как по стоимости, так и по возрасту источников данных: затраты растут с увеличением объема данных, а актуальность данных снижается из-за более длительных пакетных заданий. Распространенный подход, масштабирование кластера, устраняет симптом, а не архитектурную проблему. В этом руководстве мы рассмотрим альтернативное решение, которое устраняет обе проблемы в их корне: использование Netflix Maestro, горизонтально масштабируемого оркестратора рабочих процессов, выпущенного Netflix в июле 2024 года, вместе с Apache Iceberg, стандартным форматом таблиц для аналитики в объектном хранилище. Первый помогает, переходя от планирования по времени к событийно-ориентированному подходу, в то время как последний устраняет накладные расходы на перечисление файлов, которые замедляют запросы к большим наборам данных и увеличивают их стоимость.
В настоящее время существует довольно много ИИ-помощников для написания кода. В этом блоге мы подробнее рассмотрим GitHub Code CLI, ИИ-помощника для написания кода, работающего в терминале. GitHub Copilot CLI легко интегрируется с GitHub Copilot, поэтому, если у вас есть подписка на GitHub Copilot, определенно стоит обратить на него внимание. Приятного чтения! Введение Существует множество ИИ-моделей и также множество ИИ-помощников для написания кода. Какой выбрать — сложный вопрос. Это также зависит от того, запускаете ли вы модели локально или в облаке. При локальном запуске Qwen3-Coder — очень хорошая ИИ-модель для задач программирования. В предыдущих публикациях DevoxxGenie, плагин для IDE JetBrains, часто использовался как ИИ-помощник для написания кода. DevoxxGenie хорошо интегрирован в IDE JetBrains. Но также полезно обратить внимание на других ИИ-помощников для написания кода. В предыдущих блогах Qwen Code и Claude Code использовались в сочетании с локальными моделями.
Генерация с дополненным поиском (RAG) является стандартом для интеграции частных или предметно-ориентированных знаний в большие языковые модели. Однако большинство систем RAG по-прежнему генерируют галлюцинации, поскольку этап поиска является несовершенным. Большие языковые модели могут обрабатывать только ту информацию, которую они получают, и если извлеченные фрагменты неадекватны, модель будет выдумывать неподтвержденную информацию. Следовательно, точность и надежность системы RAG в значительной степени зависят от ее поисковых возможностей. В этой статье исследуется поиск с учетом отношений как решение этих недостатков поиска. В ней представлена RudraDB-Opin, бесплатная векторная база данных с учетом отношений, в качестве практической реализации. RudraDB-Opin предназначена для обучения, прототипирования и реальных проектов. Она может обрабатывать значительное количество векторов и отношений. Эта возможность позволяет моделировать обширные базы знаний. База данных призвана продемонстрировать различные шаблоны поиска, обсуждаемые в статье.
Генерируемый ИИ код стал новой нормой во фронтенд-разработке. Теперь программист может просто запросить компонент React, форму, таблицу, модальное окно или даже макет целой страницы и получить что-то пригодное для использования за считанные секунды. Эта скорость реальна. Исследования GitHub Copilot показали, что разработчики, используя этот инструмент, добились поразительного ускорения выполнения задачи кодирования на 55,8%, что объясняет, почему команды разработчиков стали более склонны использовать ИИ-помощников по написанию кода. Однако скорость генерации не равна скорости во время продакшена. Фронтенд-код должен учитывать реальные взаимодействия с пользователем, устройства, браузеры, потребности в доступности, сбои API, изменения продукта и меры безопасности. ИИ может быстро создавать код, но скрытая стоимость проявляется только после первоначального черновика, и такие вещи, как ревью кода, исправление ошибок, оптимизация производительности, исправление проблем доступности, согласование с дизайн-системой и обслуживание, должны быть решены.
Если вы работали на платформе данных более нескольких лет, вы почти наверняка дважды создавали один и тот же конвейер. Сначала так, как команда писала конвейеры в 2019 году: здесь блокнот, там скрипт Python, DAG Airflow для их связывания и длинный документ, объясняющий порядок выполнения задач. Затем переписывание, два года спустя, когда кто-то уволился, и никто не мог вспомнить, почему в определенной задаче было sleep(180). Lakeflow — это ответ Databricks на эту модель, и сдвиг, к которому он призывает, больше, чем кажется из маркетинговых материалов. Это не новый оркестратор. Это переход от императивных конвейеров, где вы пишете шаги, к декларативным конвейерам, где вы пишете конечную точку, а движок сам определяет шаги. Далее следует практическая версия этого сдвига — что на самом деле изменилось, где выгоды реальны и как мигрировать, не получив наполовину преобразованный lakehouse.
От McKinsey до BCG, от ЕС до ISO, и от поставщиков и консалтинговых фирм по всему миру — у каждого есть своя версия оценки готовности к ИИ. Быстрый поиск выдаст десятки таких оценок, и они ежедневно появляются в моих лентах. Некоторые поверхностны и неглубоки, другие — детальные и продуманные. Некоторые представляют собой набор случайных вопросов, в то время как другие тщательно категоризированы по таким элементам, как стратегия, данные, технологии, таланты, управление и культура. Некоторые можно пройти за час, в то время как другие требуют обширной подготовки, исследования и участия. Все они имеют общие недостатки для подобных инструментов: они основаны на самоотчетах, самооценке и самоинтерпретации. Все социологи знают, что данные, полученные путем самоотчета, по своей сути подозрительны. У социологов и исследователей есть название для того, что происходит, когда люди оценивают себя без какой-либо внешней калибровки: они называют это предвзятостью, и это было исчерпывающе изучено.
Пятница, 15:00, когда приходит уведомление о безопасности: критическая уязвимость нулевого дня в широко используемой службе Windows. Вы управляете 5000 конечными точками в 50 местах, каждое из которых имеет разные окна обслуживания, графики резервного копирования и уровни критичности. Вам нужно исправить все — но только после проверки достаточного дискового пространства, подтверждения недавних резервных копий и соблюдения производственных графиков. С традиционными инструментами вас ждет уик-энд ручной работы и отслеживания в электронных таблицах. С современной платформой RMM это проблема конфигурации политики. Такова реальность современных ИТ-операций: переход от реактивного тушения пожаров к проактивному, управляемому политиками управлению инфраструктурой. Для системных администраторов, архитекторов и инженеров DevOps это требует платформы RMM, построенной на современных архитектурных принципах. Принципах, которые обеспечивают автоматизацию, интеллектуальное оповещение и бесшовную интеграцию
Искусственный интеллект развивается, выходя за рамки базовых чат-интерфейсов, чтобы играть активную роль в корпоративных приложениях. В то время как первоначальные интеграции ИИ часто фокусируются на генерации текста, его суммаризации или генерации с дополненным извлечением (RAG), многие бизнес-задачи требуют более продвинутых решений. Они требуют разбиения сложных целей на последовательные задачи и координации их выполнения. Шаблон планирования (Planning Pattern) решает эту проблему, позволяя ИИ функционировать как генератор контента, так и стратег, создающий планы выполнения. Для инженеров-программистов и архитекторов Шаблон планирования знаменует собой значительный прогресс в интеллектуальных системах. Он отделяет рассуждения от выполнения, позволяя приложениям использовать большие языковые модели, обеспечивая при этом управление, наблюдаемость и надежность в корпоративных условиях.