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

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

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

Визуальные трансформеры (ViT)

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров857

С момента своего появления в 2017 году в публикации Attention is All You Need трансформеры стали доминирующим подходом в обработке естественного языка. В 2021 году в статье An Image is Worth 16x16 Words трансформеры были успешно адаптированы для задач компьютерного зрения. С тех пор для компьютерного зрения было предложено множество архитектур на основе трансформеров.

В этой статье мы рассмотрим трансформер зрения (Vision Transformer, ViT) в том виде, в котором он был представлен во второй статье. Она включает в себя открытый код ViT, а также концептуальные объяснения компонентов. Реализация ViT, рассмотренная в статье, выполнена с использованием пакета PyTorch.

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

Обзор AI-ассистента Cursor для разработчиков

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

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

Конечно, сейчас уже есть инструменты на базе искусственного интеллекта, такие как GitHub Copilot, ChatGPT и Claude, которые пытаются облегчить нам жизнь. Но давайте будем честны — они также заставляют нас желать большего.

Вам когда-нибудь хотелось, когда вы активно погружались в сложный проект, чтобы ваш AI-помощник видел всю картину в целом? Например, понимал общую архитектуру, ваш стиль кодирования и специфические особенности проекта?

Вот тут-то и приходит на помощь Cursor.

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

Что должен знать каждый разработчик о вычислениях на GPU

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров14K

Большинство программистов отлично разбираются в работе процессоров и последовательном программировании, поскольку с самого начала пишут код для CPU. Однако многие из них меньше знают о том, как устроены графические процессоры (GPU) и в чем заключается их уникальность. За последнее десятилетие GPU стали чрезвычайно важны благодаря широкому применению в глубоком обучении, и сегодня каждому разработчику необходимо обладать базовыми знаниями о том, как они работают. Цель этой статьи — дать вам это понимание. 

Читать далее
Всего голосов 37: ↑35 и ↓2+43
Комментарии6

Разный подход к CI/CD: опыт Amazon и Google

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров5.2K


Несколько лет я был техническим лидером инфраструктуры для интеграционного тестирования на уровне компании в Amazon и в Google. Могу сказать, что подходы этих двух компаний к CI/CD значительно различаются.

В Amazon я проработал 11 лет (с 2009 по 2020 год). Я работал главным инженером в команде Developer Tools, которая управляла всей инфраструктурой и инструментами для CI/CD по всей компании. Мы обслуживали программное обеспечение, которое десятки тысяч сотрудников Amazon каждый день использовали для написания, проверки, сборки, тестирования и развёртывания кода.

В 2020 году я всё-таки решился на большие изменения и присоединился к Google, где провёл 4 года в качестве технического руководителя инфраструктуры для интеграционного тестирования — критически важной части инструментария CI/CD Google. Несмотря на схожесть сферы деятельности, технологические стеки различались кардинально.

Получив опыт работы в Google, другой компании с иным взглядом на процессы, я вернулся в Amazon. Без сомнений, взглянуть на вещи под другим углом было интересно и полезно.
Читать дальше →
Всего голосов 16: ↑14 и ↓2+17
Комментарии3

Тестирование исключений

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

Разработка через тестирование (TDD) — это отличный метод, который позволяет быстро получать обратную связь по идеям дизайна и реализации, а также быстрее прийти к работающему решению.

Однако упор на «идеальный сценарий» может заставить забыть обо всех возможных ошибках и непредвиденных ситуациях. Рано или поздно вы осознаете, что реализация может дать сбой по ряду причин, и, стремясь сделать её более надёжной, вы захотите протестировать код обработки ошибок с помощью автоматизированных тестов.

Это не обязательно должно быть сложно, но может вызвать интересные вопросы. В этой статье я постараюсь затронуть некоторые из них.

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

ViewModels в Android: «за» и «против». Часть 2

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров888

Продолжение первой части цикла. В первой части мы разобрались в причинах, по которым загрузка данных в блоке init{} может помешать прогрессу; изучили наиболее рациональные методы организации пользовательского интерфейса и логики приложения с помощью ViewModels. Также мы обсудили простые решения и важные тактики, позволяющие избежать часто встречающихся подводных камней.

В этой части мы продолжим фокусироваться на важных принципах разработки и оптимизации ViewModel в Android, направленных на улучшение архитектуры приложения и повышение его производительности. Рассмотрим подробнее рекомендации, касающиеся раскрытия изменяемых состояний, использования update{} при использовании MutableStateFlows и «ленивого» внедрения зависимостей в конструктор.

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

Обновление CocoaPods: пошаговое руководство

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

CocoaPods — это менеджер зависимостей для разработки под iOS и macOS, который упрощает процесс включения внешних библиотек в проект. С помощью CocoaPods можно быстро добавлять и управлять сторонними библиотеками и фреймворками, не беспокоясь о сложностях, которые неизбежно возникают при их интеграции вручную. В этой статье предлагаем ознакомиться с пошаговым руководством по началу работы с CocoaPods на Mac, включая установку и обновление, создание Podfile, а также добавление и управление зависимостями с помощью CocoaPods. Руководство довольно детальное и будет полезно для новичков.

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

Как организовать продуктивную четырёхдневную рабочую неделю?

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

Сто лет назад экономисты и философы предполагали, что к 2000 году в промышленно развитых странах продолжительность рабочего дня будет составлять всего 4 часа. И, хотя мы прошли долгий путь от длинного 12-14-часового рабочего дня в первой половинк XIX века, мы всё ещё даже не приблизились к этому прогнозу.

Более того, мне кажется, что большинство людей чувствуют себя так, будто они работают больше, чем когда-либо.

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

Правда в том, что мы можем работать меньше часов. Просто большинство компаний предпочитают этого не делать.

В этой статье на примере опыта компании Planio рассмотрим преимущества и особенности перехода на четырёхдневную рабочую неделю.

Читать далее
Всего голосов 27: ↑26 и ↓1+31
Комментарии22

Профилирование приложений на SwiftUI с помощью Instruments

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

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

В этой статье мы рассмотрим, как можно использовать Instruments для получения новых и интересных данных о вашем приложении.

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

Сказ о слонах: Как я развивал инструмент, повлиявший на работу тысяч инженеров в Amazon

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


Сейчас я являюсь старшим инженером в Google, а до этого работал в качестве ведущего инженера в Amazon. Многие задачи, которыми я занимаюсь последние несколько лет, касаются того, как замотивировать людей что-то сделать. Больше всего мне приходится работать именно над человеческими (а не техническими) проблемами, и именно они имеют наибольшое значение. Я выбрал неруководящий путь лидерства, который подразумевает, что я веду команду за собой без формальных полномочий — поэтому для меня было очень важно разработать инструменты эффективного влияния.

Я создал и развил внутреннюю платформу для тестирования нагрузки и производительности в Amazon (TPSGenerator). Я начал работать над ней в 2013 году, а к моменту моего ухода в 2020 году её использовали десятки тысяч человек в критически важных для бизнеса приложениях; она выполняла сотни миллионов транзакций в секунду и поддерживалась командой отличных инженеров. Эта платформа помогла предотвратить сотни проблем в работе и сэкономить миллионы долларов.
Читать дальше →
Всего голосов 19: ↑16 и ↓3+16
Комментарии0

Стабы и моки нарушают инкапсуляцию

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

С некоторых пор я предпочитаю использовать фейки вместо стабов и моков, поскольку использование фейковых объектов вместо других тестовых дублёров делает тестовые наборы более надёжными. Я написал кодовую базу для своей книги Code That Fits in Your Head полностью с использованием фейков и тестового шпиона, и мне редко приходилось исправлять неработающие тесты. Никаких Moq, FakeItEasy, NSubstitute или Rhino Mocks, только написанные вручную тестовые дублёры.

Недавно я понял, что проблема с моками и стабами заключается в том, что они нарушают инкапсуляцию.

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

Каноничный TDD

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

Вик Ву (Vic Wu) удалось схематизировать суть этой статьи.

В этой статье я привожу вредные советы относительно того, как нужно делать TDD. Берите ответственность за качество своей работы на себя так, как вам удобно, если только вы действительно берёте на себя эту ответственность.
Читать дальше →
Всего голосов 12: ↑12 и ↓0+17
Комментарии9

Реализация доступности веб-приложений с помощью Flutter

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

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

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

Актуальны ли 14 принципов управления из книги Эдвардса Деминга «Выход из кризиса» 1982 года?

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

Думаю, что актуальны. Они отражают главные составляющие успешной системы управления, которую отстаивал Деминг. Если лидеры внимательно изучат эти моменты и начнут их использовать, они от этого только выиграют.

Деминг разработал 14 идей или принципов управления, позволяющих заметно повысить эффективность любой организации. Впервые эти принципы были представлены широкой публике в его книге «Выход из кризиса» (1982).

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

10 лучших инструментов управления тестированием в 2024 году

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


Инструментов управления тестированием существует большое множество, и понять, какой из них подходит для конкретного проекта, бывает довольно сложно. Будучи руководителем QA-отдела, я протестировал, проанализировал и оценил самые популярные инструменты управления тестированием и составил спиок лучших из них.
Читать дальше →
Всего голосов 11: ↑11 и ↓0+15
Комментарии7

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

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


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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров1K

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

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

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

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

Информация

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