Несколько дней назад мы увидели новую экспериментальную фичу под названием “проверка захвата” (capture checking), анонсированную в твите Мартина Одерски (Martin Odersky).
Эта фича является новой главой в десятилетней борьбе за добавление какой-либо формы системы эффектов в scala 3. Она имеет некоторое сходство с предложением линейных ограничений (linear constraints) для Haskell и временами жизни (lifetimes) Rust.
Я Software Engineer in Test (SET). Многие не совсем понимают, что это значит. Разработчики часто называют меня «тестировщиком» или «QA», а бывший директор однажды подумал, что я занимаюсь DevOps. Хотя моя работа и охватывает данные области, они не являются моим основным направлением занятости. Давайте я постараюсь прояснить, что значит быть SET.
Интересно ли вам построить карьеру в качестве облачного архитектора? Мы рассмотрим навыки, необходимые для успешной работы с облачной архитектурой, как выглядит один день из жизни архитектора, а также пути к достижению такой должности, чтобы понять, какие первые шаги можно предпринять, чтобы начать свой карьерный путь.
В этой статье рассмотрим, что такое "Сериализуемость" (Serializability) и какие гарантии она предоставляет.
В реляционных СУБД уровень изоляции Serializable (сериализуемость), как следует из названия, обеспечивает сериализуемость транзакций. Однако, как вы увидите далее, в некоторых базах данных реализована также строгая сериализуемость (Strict Serializability), которая представляет собой комбинацию сериализуемости и линеаризуемости (Linearizability).
Данная статья является первой из трех, которые будут рассказывать об инструментах, которые используются для тестирования внутренней инфрасруктуры Windows Active Directory. Во всех тестовых сценариях подразумевается, что уже есть доступ во внутреннюю инфраструктуру и в ней есть активные пользователи, которые пользуются сервисами Windows AD, такими как файловые шары, центры сертификации, веб-приложения и т.д.
В последние годы трансформеры, которые изначально были разработаны для обработки естественного языка, становятся все более важными в таких областях компьютерного зрения, как обнаружение объектов, сегментация изображений и т.д., опережая традиционные архитектуры, основанные только на сверточных слоях.
Среди наиболее известных архитектур трансформеров можно назвать Google ViT или Microsoft Swin Transformer, которые доминируют в обнаружении объектов и сегментации естественных изображений. Эти две архитектуры являются лишь одним из примеров многих работ, которые были сделаны для того, чтобы адаптировать трансформеры к обработке естественных изображений.
Представьте себе крупную организацию с сотнями моделей машинного обучения, которые нуждаются в тренинге и регулярной оценке. Любое небольшое изменение в датасетах для обучения может существенно повлиять на результат модели. Немного измените ограничивающие рамки или уменьшите размер файла, и вы можете получить совершенно разные результаты вывода. Масштабируйте этот сценарий на сотни моделей, и он быстро станет неуправляемым. Возможность системного восстановления после последствий таких экспериментов требует строгого контроля версий данных, их истории и методов управления жизненным циклом модели.
В тот момент, когда вы набираете что-то на клавиатуре, читаете файл с диска или скачиваете его через Интернет, поток информации (биты) проходит через различные устройства и приложения.
Если вы научитесь работать с этими потоками битов, то сможете создавать высокопроизводительные и полноценные приложения. Например, вспомните, как просматривается видео на YouTube. Необязательно ждать, пока загрузится весь видеоролик. Как только в буфер попадает небольшой фрагмент, он начинает воспроизводиться, а остальное продолжает загружаться по мере просмотра.
Этот пост является заключительным в моей мини-серии из трех постов о cppcoro. cppcoro — это библиотека абстракций корутин от Льюиса Бейкера (Lewis Baker). Сегодня я покажу вам пулы потоков (thread pools).
Все мы знаем, что Django предоставляет ORM прямо из коробки, что не позволяет нам писать SQL-запросы. В этом механизме есть большой потенциал. Однако большинство из нас знакомы только с методами filter(), get(), update() и delete() из Django ORM.
В Django ORM есть много других опций, поэтому у нас все же возможность использовать функционал традиционных SQL-запросов. Сегодня в статье я вам про него расскажу.
Из этой статьи узнаете, как использовать Listener API и библиотеки качества данных, чтобы улучшить наблюдаемость данных для Apache Spark на разных уровнях.
Недавно мне пришлось обновить сетевую политику для одной из наших служб. Перед внедрением изменений я захотел протестировать их с помощью Minikube, чтобы удостовериться, что ничего не испорчу.
В этой заметке описаны шаги, которые были мною выполнены для проведения теста.
Машинное обучение (ML) становится эффективным, когда его модели внедряются в производство. С другой стороны, организации обычно недооценивают сложность и проблемы внедрения машинного обучения в производство, выделяя большую часть своих ресурсов на разработку ML и рассматривая машинное обучение как обычное программное обеспечение.
В итоге программы машинного обучения не приносят результатов, что приводит к потере денег, нерациональному использованию ресурсов, а для преодоления этой проблемы разрабатывается концепция MLOps.
В последнее время видны масштабные изменения в способах разработки веб-приложений. Если раньше интерфейс создавался на сервере, а на стороне клиента выполнялись лишь незначительные сценарии, то в наши дни стандартом является использование какой-либо из различных библиотек реактивного рендеринга для создания сложных стейтфул клиентских приложений.
Хотя многие разработчики успешно применяют такие библиотеки как React или Vue, понимание их точной внутренней работы не слишком широко изучено. В этой статье я расскажу о создании собственной библиотеки реактивного рендеринга, и разъясню, что происходит под капотом.
Selenium – один из самых популярных фреймворков автоматизации тестирования. Несмотря на то, что Selenium поддерживает шесть популярных языков программирования, его можно использовать для волшебной реализации с наименьшим количеством кода в связке с Python.
Сколько раз мы видели инфраструктуру и методологию тестирования, когда команда не может получить своевременную обратную связь о производительности разрабатываемой системы? Как правило, к тестированию производительности принято относиться как к "проекту по методу водопада", когда мы, тестировщики, готовим тест и запускаем его в продакшн непосредственно перед деплоем. Однако есть лучший способ сделать это, и он заключается в непрерывном тестировании производительности. При правильной имплементации оно (непрерывное тестирование) придает уверенность разработчикам и предупреждает их о любом существенном снижении производительности системы.
Традиционно для сценариев поточной обработки с использованием Map-Reduce рассматриваются такие решения как Hadoop/Spark, либо используются конвейерные системы (например Kafka), для которых есть возможность реализовать концепцию потоков (streams) с помощью дополнительных инструментов (в случае с Kafka это Kafka Connect (для подключения к источникам и получателям потока) и Kafka Streams для реализации Map-Reduce на потоке сообщений.
Начиная с версии 3.9 RabbitMQ анонсировал поддержку нового типа очереди, оптимизированного для поточной обработки. В этой статье мы посмотрим на основные отличия очередей RabbitMQ от классического режима очереди сообщений, а также возможные сценарии использования (с примерами кода на Go).
По сравнению с бинарным поиском, который построен вокруг одной операции поиска, классический алгоритм Левенштейна поддерживает три операции: вставить/insert, удалить/delete и заменить/substitute (символ в строке). Расстояние редактирования, которое он выдает, является минимальным количеством необходимых операций.