Pull to refresh
69
45.6
Ксения Мосеенкова @kmoseenk

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

Send message

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

Reading time9 min
Views3.7K

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

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

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

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

Читать далее
Total votes 16: ↑15 and ↓1+20
Comments14

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

Level of difficultyMedium
Reading time13 min
Views13K

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

Читать далее
Total votes 36: ↑34 and ↓2+42
Comments6

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

Level of difficultyMedium
Reading time8 min
Views5.1K


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

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

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

Получив опыт работы в Google, другой компании с иным взглядом на процессы, я вернулся в Amazon. Без сомнений, взглянуть на вещи под другим углом было интересно и полезно.
Читать дальше →
Total votes 15: ↑13 and ↓2+15
Comments3

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

Reading time9 min
Views1K

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

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

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

Читать далее
Total votes 14: ↑12 and ↓2+14
Comments1

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

Level of difficultyMedium
Reading time9 min
Views848

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

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

Читать далее
Total votes 13: ↑13 and ↓0+16
Comments0

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

Level of difficultyEasy
Reading time5 min
Views621

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

Читать далее
Total votes 9: ↑9 and ↓0+14
Comments1

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

Reading time14 min
Views6.2K

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

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

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

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

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

Читать далее
Total votes 27: ↑26 and ↓1+31
Comments22

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

Reading time7 min
Views244

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

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

Читать далее
Total votes 8: ↑8 and ↓0+13
Comments0

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

Reading time12 min
Views4K


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

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

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

Reading time19 min
Views1.5K

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

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

Читать далее
Total votes 13: ↑8 and ↓5+4
Comments4

Каноничный TDD

Reading time5 min
Views3.2K

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

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

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

Reading time8 min
Views1.4K

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

Читать далее
Total votes 11: ↑10 and ↓1+13
Comments2

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

Reading time10 min
Views3K

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

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

Читать далее
Total votes 12: ↑11 and ↓1+13
Comments3

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

Reading time12 min
Views9.2K


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

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

Reading time10 min
Views1.5K


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

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

Reading time8 min
Views1.4K

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

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

Читать далее
Total votes 11: ↑10 and ↓1+11
Comments0

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

Reading time15 min
Views1.9K


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

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

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

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

Reading time10 min
Views3K

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

Читать далее
Total votes 11: ↑11 and ↓0+14
Comments0

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

Level of difficultyMedium
Reading time9 min
Views999

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

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

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

Читать далее
Total votes 14: ↑13 and ↓1+15
Comments0

Frontend демо

Reading time10 min
Views1.3K

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

Читать далее
Total votes 9: ↑8 and ↓1+9
Comments0
1
23 ...

Information

Rating
137-th
Works in
Registered
Activity