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

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

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

Виртуальные потоки Java: разбор тестовых сценариев

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

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

В этой статье представлены наши результаты, включая:

- Обзор реализации виртуальных потоков в Java
- Обзор текущей технологии пула потоков в Liberty
- Оценку по ряду показателей производительности, включая неожиданные наблюдения
- Сводный обзор наших выводов

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

Чек-лист: проверяем веб-страницы на соответствие стандартам WCAG

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

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

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

Операции машинного обучения (MLOps) для начинающих: полное внедрение проекта

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

Разработка, развёртывание и поддержка моделей машинного обучения в продакшене может быть сложной и трудоёмкой задачей. Здесь на помощь приходит Machine Learning Operations (MLOps) — набор практик, который автоматизирует управление ML-процессами и упрощает развёртывание моделей. В этой статье я расскажу о некоторых основных практиках и инструментах MLOps на примере реализации проекта от начала до конца. Это поможет вам эффективнее управлять ML-проектами, начиная с разработки и заканчивая мониторингом в продакшене.

Прочитав эту статью, вы узнаете, как:

— Использовать DVC для версионирования данных.
— Отслеживать логи, артефакты и регистрировать версии моделей с помощью MLflow.
— Развернуть модель с помощью FastAPI, Docker и AWS ECS.
— Отслеживать модель в продакшене с помощью Evidently AI.

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

Расширенная шпаргалка по корутинам Kotlin

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

Предположим, что вы уже какое-то время работаете с Kotlin-корутинами и знакомы с базовыми концепциями, такими как приостанавливаемые (suspend) функции и билдер launch. Однако по мере усложнения проектов вы всё чаще сталкиваетесь с необходимостью искать решения для более продвинутых задач и обращаетесь к поисковым системам или искусственному интеллекту за помощью.

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

Читать далее
Всего голосов 23: ↑21 и ↓2+25
Комментарии0

Автономный картографический сервер с питанием от USB

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

Представьте себе: вы только что добрались до начала тропы, за многие километры от цивилизации, а приложение с картами на вашем смартфоне решило, что самое время уйти в оффлайн-режим. Статус приложения? Отключено. Обновления? Забудьте об этом. Память? Заполнена. Добро пожаловать на дикую природу, где ваш телефон потерян больше, чем вы сами.

Здесь на помощь приходит Backcountry Beacon — устройство с открытым исходным кодом, которое не зависит от Wi-Fi. В него предустановлены детализированные топографические карты USGS, которые не требуют обновлений; он оснащён надёжным GPS, точно определяющим ваше местоположение; а ещё он работает как простой файловый сервер, где можно хранить всё, что может понадобиться в походе, — будь то руководства по узлам, справочники растений или аудиокниги.

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

Архитектура и реализация виртуальной машины CPython

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

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

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

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

Улучшенная глобальная настройка в Playwright с использованием авторизации и проектными зависимостями

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

Многие команды используют глобальную настройку для входа в приложение и последующего использования этой настройки для тестов, которые должны выполняться в авторизованном состоянии. Однако у такого подхода есть несколько важных ограничений. Например, при использовании глобальной настройки вы не видите трейсы для этапа настройки тестов, и этот этап настройки не отображается в HTML-отчёте. Кроме того, глобальная настройка не поддерживает использование фикстур.

Для решения этой проблемы создаются проектные зависимости.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


Несколько лет я был техническим лидером инфраструктуры для интеграционного тестирования на уровне компании в 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 мин
Количество просмотров1.1K

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


Сейчас я являюсь старшим инженером в 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.3K

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

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

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

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

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

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

Информация

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