Как стать автором
Обновить
68
25.6
Ксения Мосеенкова @kmoseenk

Переводчик, редактор

Отправить сообщение

Анализ влияния тестирования

Время на прочтение10 мин
Количество просмотров1.2K


Test Impact Analysis (TIA, анализ влияния тестирования) — это современный способ ускорить этап автоматизации тестирования, который работает путём анализа графа вызовов исходного кода. Благодаря этому можно определить, какие тесты необходимо запустить после внесения изменений в продакшен код. Microsoft проделала большую работу над этим подходом.
Читать дальше →
Всего голосов 11: ↑11 и ↓0+13
Комментарии0

Как уберечься от кражи репозитория (реподжекинга)

Время на прочтение8 мин
Количество просмотров1.2K

Реподжекинг или захват репозитория / перехват контроля над репозиторием — это особый вид атак на цепочки поставок. В этой статье поговорим о том, что это такое, каков риск и как можно себя обезопасить.

Этот тип атаки привлёк мое внимание из-за своего потенциального влияния на программное обеспечение с открытым исходным кодом. В этой статье я объясню, что такое захват репозитория и что можно сделать, чтобы оставаться в безопасности. Говоря вкратце: если вы получаете все свои программные зависимости из менеджера пакетов — например, npm или PyPI, то эта атака не может на вас повлиять. Если вы берёте зависимости напрямую с GitHub, нужно быть более осторожными, но есть простое решение — заблокировать определённый ID коммита. Я поясню, как это сделать, в нескольких наиболее распространённых сценариях.

Читать далее
Всего голосов 11: ↑10 и ↓1+11
Комментарии0

Инженерные практики разработки LLM-приложений

Время на прочтение15 мин
Количество просмотров1.5K


Разработка LLM-приложений включает в себя гораздо больше, чем просто промпт-дизайн или промпт-инжиниринг. В этой статье мы рассмотрим набор инженерных практик, которые помогли нам быстро и надёжно создать прототип LLM-приложения в рамках одного из недавних проектов. Мы расскажем о методах автоматизированного тестирования и состязательного тестирования LLM-приложений, о рефакторинге, а также об особенностях архитектуры LLM-приложений и ответственного искусственного интеллекта.

Недавно мы помогали клиенту с разработкой proof of concept («проверки концепции») проекта AI Concierge. Этот ИИ-консьерж призван обеспечить интерактивный голосовой опыт пользователя для помощи в решении распространённых запросов. Он использует сервисы AWS (Transcribe, Bedrock и Polly) для преобразования человеческой речи в текст, обработки этих вводных данных через большую языковую модель (LLM) и, наконец, преобразования сгенерированного текстового ответа обратно в речь.

В этой статье мы подробно рассмотрим техническую архитектуру проекта, проблемы, с которыми мы столкнулись, а также методы, которые помогли нам несколько раз быстро создать ИИ-консьержа на базе LLM.
Читать дальше →
Всего голосов 9: ↑9 и ↓0+11
Комментарии0

Как бороться с ReDoS

Время на прочтение10 мин
Количество просмотров2.7K

Проверка кода (Code Scanning) автоматически обнаруживает ReDoS-уязвимости, но исправить их бывает не всегда просто. В этой статье описана 4-х этапная стратегия исправления багов ReDoS.

Читать далее
Всего голосов 11: ↑11 и ↓0+14
Комментарии0

Как я масштабировал генератор нагрузки Amazon для работы на 1000 машин

Время на прочтение9 мин
Количество просмотров928

Я уже писал историю о том, как создал и развил инфраструктуру, которую Amazon использует для проведения нагрузочного тестирования и тестирования производительности (TPSGenerator). Но я ещё не писал о том, как я её масштабировал.

Первая версия была довольно убогой и предназначалась только для одного хоста. Я запускал её как инструмент командной строки, указывал, сколько тысяч транзакций (“TPS”) в секунду мне нужно — и TPSGenerator порождал потенциально тысячи потоков, радостно потребляя все аппаратные ресурсы, которыми вы были готовы пожертвовать. В тщетной попытке избежать проблем с распределёнными системами я профилировал каждую строчку кода и оптимизировал её до последней степени. На обычной машине он мог генерировать несколько сотен тысяч TPS, что было достаточно для многих сервисов.

Но приближался день больших распродаж «Киберпонедельник» — в этот день совершалось самое большое количество покупок в году. По мере приближения даты всё больше команд стали спрашивать меня, как генерировать большую пропускную способность, чем та, на которую способна одна машина — чтобы убедиться, что их сервисы справятся с пиком.

Читать далее
Всего голосов 14: ↑13 и ↓1+15
Комментарии0

Frontend демо

Время на прочтение10 мин
Количество просмотров1.2K

Бывали ли вы когда-нибудь на демо, на котором разработчики с гордостью показывали экран за экраном JSON вывод API, а пользователи путались и отвлекались, потому что у них не получалось в этом разобраться? Вы когда-нибудь пытались использовать API в разработке и были разочарованы тем, как трудно найти правильную полезную нагрузку JSON и заголовки, чтобы протестировать фичу? Demo Front-End — это простой пользовательский интерфейс, предлагающий базовые возможности для демонстрации и ознакомления с таким API.

Читать далее
Всего голосов 9: ↑8 и ↓1+9
Комментарии0

Устранение уязвимостей в системе безопасности с помощью искусственного интеллекта

Время на прочтение10 мин
Количество просмотров1.1K

В ноябре 2023 года GitHub объявил о запуске Code Scanning Autofix, который с помощью искусственного интеллекта предлагает исправления уязвимостей безопасности в кодовых базах пользователей. В этой статье мы расскажем о том, как работает Autofix, а также о системе оценки, которую мы используем для тестирования.

Читать далее
Всего голосов 10: ↑9 и ↓1+10
Комментарии1

Точка пересечения благополучия сотрудников и HR-аналитики

Время на прочтение6 мин
Количество просмотров1.4K

В сегодняшней быстро развивающейся рабочей среде здоровье и благополучие сотрудников уже не просто желательное, а обязательное условие для компаний, стремящихся к успеху. Недавнее исследование, проведённое McKinsey, показало, что низкий уровень благополучия сотрудников коррелирует с низким показателем вовлечённости и высоким показателем оттока кадров. Это, в свою очередь, может привести к тому, что средняя по размеру S&P компания будет ежегодно терять от 228 до 355 миллионов долларов в производительности. Согласно недавнему исследованию Gartner, только 31 % сотрудников сообщают, что они чувствуют себя вовлечёнными в работу, полны энтузиазма и энергии. В то же время HR-департаменты всё больше ориентируются на данные.  

Это подводит нас к критической точке пересечения: как можно использовать HR-аналитику для отслеживания, улучшения и поддержания психического здоровья и общего благополучия сотрудников?  

Читать далее
Всего голосов 9: ↑8 и ↓1+9
Комментарии2

Руководство по написанию промптов

Время на прочтение12 мин
Количество просмотров6.5K


Написание промптов — это искусство общения с генеративной ИИ-моделью. В этой статье мы расскажем о том, как мы в GitHub подходим к составлению промптов и как можно использовать эти принципы для создания собственного приложения на основе LLM.

В 2011 году в одной своей публикации Марк Андриссен предупредил: «Программы поглощают мир». Спустя более десятка лет мы наблюдаем появление нового типа технологий, которые поглощают мир с ещё большей скоростью: генеративный искусственный интеллект. Этот инновационный искусственный интеллект включает в себя уникальный класс больших языковых моделей (англ. large language models, LLM), созданных в результате десятилетия новаторских исследований, которые способны превзойти человека в решении определённых задач. И вам не нужно иметь докторскую степерь в области машинного обучения, чтобы создавать программы с использованием LLM. Разработчики уже создают программы с LLM, используя базовые HTTP-запросы и промпты на естественном языке.

В этой статье мы расскажем о работе GitHub с LLM, чтобы помочь другим разработчикам узнать, как лучше использовать эту технологию. Статья состоит из двух основных частей: в первой мы высокоуровнево расскажем о том, как функционируют LLM и как создавать приложения на основе LLM. Во второй части мы рассмотрим пример такого приложения: автодополнение кода от GitHub Copilot.
Читать дальше →
Всего голосов 17: ↑15 и ↓2+15
Комментарии0

Архитектура в Unity-разработке: паттерн «Спагетти»

Время на прочтение14 мин
Количество просмотров3.8K

Полгода назад меня повысили до ведущего Unity-разработчика, и тогда я почувствовал, что должен поднять уровень навыка написания кода. Мне надоело создавать прототипы, которые впечатляли клиентов и работодателей, в то время как через год кодовая база превращалась в адское месиво, изобилующее ошибками и горами технического долга.

Однако, куда бы я ни обращался и кого бы ни спрашивал, мнение было одним: я не должен гнаться за такими глупыми мечтами, Singleton — это всё, что мне нужно для создания приложений на Unity.

Мне однако этот ответ не понравился, и я надеюсь, что он не является окончательным. Поэтому я решил бросить себе вызов и сделать игру — не ради славы или денег, а чтобы исследовать саму природу того, как создавать игры. В надежде найти архитектурный паттерн, который сможет привести меня к чему-то большему, чем гора спагетти-кода.

Читать далее
Всего голосов 20: ↑17 и ↓3+20
Комментарии5

Как использовать GitHub Copilot в IDE: советы, приёмы и лучшие практики

Время на прочтение9 мин
Количество просмотров13K

В этой статье поговорим о практических стратегиях, повышающих эффективность использования GitHub Copilot при написании кода.

Читать далее
Всего голосов 26: ↑25 и ↓1+30
Комментарии7

Spring AI: оптимизация разработки AI-приложений с помощью Java и AI API

Время на прочтение7 мин
Количество просмотров1.5K

Во всём мире сейчас наблюдается ажиотаж вокруг темы искусственного интеллекта и разработки приложений с его использованием. Многие стремятся внедрить искусственный интеллект в свои продукты и воспользоваться всеми его преимуществами. Поэтому сообщество Spring создало модуль 'Spring AI' для упрощения интеграции AI API в приложения Spring. Spring AI — это молодой проект, призванный упростить для разработчиков интеграцию функций искусственного интеллекта в приложения Spring. И он достигает этой цели, предлагая набор абстракций и инструментов, которые упрощают взаимодействие с такими ИИ-моделями, как OpenAI и Azure OpenAI.

Читать далее
Всего голосов 10: ↑10 и ↓0+14
Комментарии0

Системное мышление: основополагающие концепции

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров9.7K

В этой серии статей я поделюсь ключевыми идеями и инструментами для развития системного мышления, необходимого для решения комплексных проблем и перехода к экономике замкнутого цикла. В первой части разберём шесть ключевых понятий.

Читать далее
Всего голосов 19: ↑12 и ↓7+9
Комментарии10

Как инженеры GitHub используют GitHub Copilot: 4 способа

Время на прочтение4 мин
Количество просмотров4.2K


Узнаем, как GitHub Copilot повышает эффективность работы инженеров из GitHub, позволяя автоматизировать повторяющиеся задачи, сохранять концентрацию и многое другое.
Читать дальше →
Всего голосов 15: ↑11 и ↓4+11
Комментарии1

Роботы наступают. И это хорошо

Время на прочтение11 мин
Количество просмотров1.6K


В этом отрывке из новой книги «Сердце и чип: Наше светлое будущее вместе с роботами» (“The Heart and the Chip: Our Bright Future with Robots”) директор Лаборатории компьютерных наук и искусственного интеллекта при MIT (CSAIL) Даниэла Рус рассказывает о том, как роботы могут расширить возможности человека.
Читать дальше →
Всего голосов 14: ↑13 и ↓1+17
Комментарии4

Как создать мультидокументный ридер и чат-бот с помощью LangChain и ChatGPT

Время на прочтение16 мин
Количество просмотров4.2K

Мы начнём с простого чат-бота, который может взаимодействовать только с одним документом; а закончим более продвинутым чат-ботом, который может взаимодействовать с несколькими различными документами и типами документов, а также сохранять историю чата — чтобы он мог отвечать на вопросы в контексте последних бесед.

Читать далее
Всего голосов 13: ↑12 и ↓1+15
Комментарии4

ViewModels в Android: «за» и «против»

Время на прочтение7 мин
Количество просмотров3.3K

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

Читать далее
Всего голосов 13: ↑12 и ↓1+15
Комментарии1

Системное мышление: как упростить его развитие?

Время на прочтение9 мин
Количество просмотров17K


Научиться эффективно применять системное мышление довольно непросто. Многие умные люди слишком долго борются с парадигмой системного мышления, процессом мышления и методологией.

За последние 15 лет моей работы с профессионалами в сфере бизнеса и образования я пришёл к выводу, что эта дисциплина требует овладения целым набором навыков мышления.

Подобно опытному баскетболисту, который на автомате применяет множество отдельных навыков, необходимых для выполнения броска в игре — таких как ведение мяча на бегу и не смотря на мяч, выбор времени и точное координирование броска, продвижение мяча к корзине одной рукой, избегая при этом блокировки со стороны защитников, — «ветераны» системного мышления не осознают, что на самом деле применяют целый набор мыслительных навыков. Выделив эти отдельные компетенции, можно практиковать каждый навык в отдельности. Такой подход поможет овладеть всеми необходимыми навыками до того, как вы попытаетесь соединить их воедино в реальной ситуации.
Читать далее
Всего голосов 19: ↑16 и ↓3+18
Комментарии14

Миграция критически важного трафика в больших масштабах без простоев: опыт Netflix

Время на прочтение10 мин
Количество просмотров976

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

При миграции систем одна из главных задач — обеспечить плавный переход трафика на обновлённую архитектуру без негативного влияния на пользовательский опыт. В этой публикации мы рассмотрим инструменты, техники и стратегии, которые мы использовали для достижения этой цели.
Читать далее
Всего голосов 14: ↑10 и ↓4+8
Комментарии6

Зачем в мобильной разработке использовать Flow, если есть мощный ChannelFlow?

Время на прочтение5 мин
Количество просмотров1.5K


Я знаю, что существует множество статей о flow и channelFlow, в которых часто подчёркивается, что channelFlow по сути использует Channel. Но что это на самом деле значит для мобильных разработчиков? Когда это различие действительно имеет значение? Можно ли добиться такого же поведения с помощью flow без использования Channel, и какие уникальные возможности предлагает ChannelFlow, которых нельзя достичь с помощью обычного Flow?

Ключ к этому вопросу лежит в понимании основной концепции Channel. Концептуально Channel и Flow служат разным целям. Каналы (Channels) облегчают взаимодействие между корутинами, в то время как потоки (Flows) больше направлены на эффективное производство и распределение данных.

ChannelFlow использует Channel для своих операций, что делает его мощным инструментом в сценариях, включающих сложную обработку данных или требующих одновременного выброса данных из нескольких корутин. Однако что же это такое?

Рассмотрим реальный сценарий, в котором приложения образуют связанную сеть, обнаруживая близлежащие приложения (устройства) через Bluetooth или локальную сеть и одновременно получая информацию о близлежащих устройствах с удалённого сервера. В этом случае каждому приложению может потребоваться отправить данные из трёх различных источников, которые работают независимо и непрерывно.
Читать дальше →
Всего голосов 9: ↑7 и ↓2+7
Комментарии0
1
23 ...

Информация

В рейтинге
232-й
Работает в
Зарегистрирован
Активность