Как стать автором
Обновить
18
0

Пользователь

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

Шпаргалка для алгособеса — алгоритмическая сложность, структуры данных, методы сортировки и Дейкстра

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

Привет, Хабр!

Так уж повелось, что любой уважающий себя работодатель перенимает передовые^✻ методики FAANG — по этой причине практически во всех IT-собесах есть она: секция алгоритмов. Кто-то ей рад, кто-то не очень, но секция есть и уходить пока не планирует. Поэтому нужно закатать рукава и достойно встретить суровую реальность.

Читать далее
Всего голосов 216: ↑214 и ↓2 +212
Комментарии 77

Расширяем тестовый фреймворк с помощью Pytest-плагинов. Часть 2: практика

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

В первой части статьи мы разбирались с теорией, которую нужно знать для создания собственных Pytest-плагинов: фикстурами, маркерами и хуками. А теперь перейдем к практике. 

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

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

Расширяем тестовый фреймворк с помощью Pytest-плагинов. Часть 1: теория

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

Всем привет! Меня зовут Александр Волков, я занимаюсь интеграционным и компонентным тестированием в YADRO. В числе продуктов компании есть системы хранения данных и, говоря о тестировании, я буду иметь в виду в первую очередь работу с СХД. Однако описанные подходы пригодятся всем, кто ищет инструменты для создания тестового фреймворка и расширения его возможностей под свои задачи. 

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

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

Продюсеры и консьюмеры с Apache Kafka в Python

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

Салют, Хабр!

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

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

В статье мы и поговорим именно про продюсерах и консюмерах в экосистеме Kafka в коннекте с Python.

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

В закладки тестировщика-автоматизатора: от базовых правил для написания быстрых автотестов до полезных плагинов Pytest

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

Привет, Хабр! Принесли полезный контент для всех, кто пишет автотесты на Python. В подборке — видео докладов с последнего AQA-митапа: о плагинах Pytest, архитектуре автотестов для продукта на open source-движке, а также о критериях понятных тестов (и как их соблюдать на практике). Материалы будут полезны как начинающим, так и опытным AQA-инженерам. Под катом — все видео и ответ на вопрос, зачем это смотреть, от гостей митапа.

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

Курс «PostgreSQL для начинающих»: #1 — Основы SQL

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

Этим постом я запускаю публикацию расширенных транскриптов лекционного курса "PostgreSQL для начинающих", подготовленного мной в рамках "Школы backend-разработчика" в "Тензоре".

В программе: рассказ об основах SQL, возможностях простых и сложных SELECT, анализ производительности запросов, разбор [не]эффективного применения индексов и особенностей работы транзакций и блокировок в этой СУБД.

Курс не претендует на лавры "войти в айти", поэтому подразумевает наличие у слушателя опыта программирования или работы с другими СУБД, и, главное, желания самостоятельно изучать тему работы с PostgreSQL глубже.

Для тех, кому комфортнее смотреть и слушать, а не читать - доступна видеозапись.

Читать далее
Всего голосов 35: ↑34 и ↓1 +33
Комментарии 30

SOLID — это несложно. С примерами на Python

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

Привет, Хабр! Меня зовут Павел Корсаков, я python-разработчик в облачном провайдере beeline cloud.

Почти на всех собеседованиях задают вопросы про SOLID: что это такое, зачем нужен, как его применяет кандидат, как понимает принципы из него?

Мы тоже спрашиваем кандидатов про SOLID. Чаще всего они рассказывают, что SOLID — это акроним, озвучивают все его принципы, но объяснить и привести примеры могут лишь для половины. На остальных либо плавают, либо сливаются.

Чтобы мой материал не получился очередной статьей про SOLID, я изменю формат подачи и последовательность объяснения принципов. Буду добавлять код небольшими инкрементами и на каждом из них указывать, какие принципы SOLID используются в том или ином случае. 

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

Практический гайд по процессам и потокам (и не только) в Python

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

За то время что я занимаюсь менторством я заметил, что большинство вопросов новичков связаны с темами: конкурентность, параллелизм, асинхронность. Подобные вопросы часто задают на собеседованиях, в работе эти знания позволяют писать более эффективные и производительные системы.

Цель статьи - понятно и доходчиво, используя примеры кода и бенчмарки рассказать о том какие инструменты есть в Python и как с их помощью добиться высокой производительности.

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

Celery: изучаем на реальных примерах ч.1

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

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

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

Как устроен GIL (Global Interpreter Lock) в Python: влияние на многозадачность и производительность

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

Привет, уважаемые читатели!

GIL, или Global Interpreter Lock десятилетиями оставался темой обсуждения и дебатов среди питонистов.

Что такое GIL? GIL, сокращение от Global Interpreter Lock, представляет собой важную концепцию в Python. Он представляет собой мьютекс, который блокирует доступ к объекту Python interpreter в многопоточных средах, разрешая выполнять лишь одну инструкцию за раз. Этот механизм, хоть и заботится о безопасности и целостности данных, одновременно становится камнем преткновения для тех, кто стремится максимально задействовать многозадачность и использовать полностью потенциал многоядерных процессоров.

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

В начальных версиях Python, GIL не существовал. Однако, когда Python начал использоваться для многопоточных приложений, стало очевидным, что возникают проблемы с одновременным доступом к общим ресурсам. Поэтому Гвидо ван Россум и команда разработчиков внедрили GIL, чтобы обеспечить безопасность работы с памятью и объектами Python.

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

Анализ 10 000 вопросов с технических интервью: частотность и вероятность встречи

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

Привет, Хабр! Я проанализировал 600 публичных мок-интервью с YouTube и собрал из них 10 000 уникальных вопросов. Затем посчитал, как часто они встречаются, и определил вероятность появления каждого вопроса. У меня есть данные по 20 профессиям, включая frontend, python, java-разработчика, специалиста по тестированию и многих других.

Читать далее
Всего голосов 54: ↑52 и ↓2 +50
Комментарии 19

Настройка CI/CD для Gitlab-репозитория: схемы и гайд по шагам

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

Рассказываем, как работать с CI/CD, о шагах при настройке сервера и о полезных командах, которые помогут в работе.

Привет! Меня зовут Николай, я Backend-разработчик в РЕЛЭКС.

В статье ты найдешь полезный теоретический материал, сравнение инструментов CI/CD и подробный гайд по сборке и развертыванию через Docker на удаленный сервер с помощью Gitlab CI/CD — на примере Spring Boot приложения.

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

Как мы делали курс Base Cloud DevOps и что он дает новичкам в DevOps и Kubernetes

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

Привет, Хабр! Меня зовут Екатерина Юдина, отвечаю за направление контент-маркетинга в beeline cloud. Я курировала создание курса Base Cloud DevOps и хочу рассказать о том, как мы его делали. А также о самом курсе — чем он отличается от других образовательных программ и почему будет полезен новичкам в разработке и системном администрировании.

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

Какая роль у тестировщика на каждом этапе гибкой модели разработки?

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

Привет, Хабр! Меня зовут Анфиса Одинцова, я — наставница в Яндекс Практикуме на курсе «Инженер по тестированию». Сейчас работаю в JoomPay. В этой статье разберём, что такое гибкая модель разработки и какова в ней роль тестировщика на каждом этапе создания продукта: анализе, планировании, дизайне, разработке, тестировании и запуске.

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

3X-UI: Shadowsocks-2022 & XRay (XTLS) сервер с простой настройкой и приятным интерфейсом

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

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

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

Поэтому сегодня мы поговорим об установке и использовании графической панели 3X-UI для сервера X-Ray с поддержкой всего того, что умеет X-Ray: Shadowsocks-2022, VLESS с XTLS и т.д.

Читать далее
Всего голосов 38: ↑37 и ↓1 +36
Комментарии 198

Четыре способа написать Hello world, или инструменты для создания GUI на Python

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

После написания программы ее можно модифицировать и добавить графический интерфейс — с Python это проще, чем кажется. Для программирования красивого и функционального GUI иногда достаточно простого знания html и css.

Под катом — подборка некоторых инструментов для создания интерфейсов на Python. Сохраняйте статью в закладки и предлагайте свои варианты в комментариях!
Читать дальше →
Всего голосов 56: ↑53 и ↓3 +50
Комментарии 61

Messaging для чайников. Утилизируем все возможности RabbitMQ на Python

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

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

Оказалось, что материала на эту тему много, но он либо объясняет совсем базовые случаи, либо уходит в такие дебри, которые крайне далеки и тяжелы для человека, который хочет "просто разобраться".

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

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

Примеры в статье будут приведены с использованием фреймворка Propan, чтобы не утруждать джуновский мозг лишними деталями установления соединения, канала и тд.

Поехали
Всего голосов 13: ↑13 и ↓0 +13
Комментарии 9

Разбираемся с основами автотестирования: пошаговая инструкция по созданию собственного фреймворка для проверки API

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

Привет, я Алексей, QA Automation Engineer в команде «Интеграции» в Петрович-ТЕХ. Занимаюсь разработкой фреймворка автоматизированного тестирования сервисов интеграции, для REST и SOAP. 

Наблюдение: когда приходишь на собеседование на должность Junior QA Automation, то обязательно просят разработать автотесты для API. Звучит логично, но не так уж и просто: когда только начинаешь свой путь в автотестировании, тебе не всегда очевидно, как должен выглядеть рабочий тестовый фреймворк, из чего он должен состоять, как правильно написать тесты, а к ним тестовые данные. «Сырые» тесты, которые описывают в книгах и разных источниках – не всегда выручают.

В этой статье расскажу о разработке типового фреймворка для тестирования API – на Python, с нуля, шаг за шагом. В итоге получим полностью готовый тестовый фреймворк – надеюсь, с его помощью вы сможете сделать тестовое задание для собеседования или просто улучшить ваш уже действующий тестовый фреймворк.

Надеюсь, статья будет интересна начинающим авто-тестировщикам и тем, кто уже разрабатывает автотесты для API.

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

Poetry: from zero to hero

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

Привет, Хабр! Меня зовут Тимур, я тружусь ML-инженером в одной сибирской IT-компании.

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

В качестве бонусов - готовая GitLab CI джоба для сборки и публикации пакетов, а также шаблон Dockerfile для multi-stage сборки образов в проектах с использованием Poetry.

Добро пожаловать под кат!

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

Screenplay — не Page Object'ом единым

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

Со временем вносить изменения в любой продукт становится сложнее, и растёт риск не только зарелизить новые фичи, но и сломать старые. Часто вместо того, чтобы руками проверять весь проект, этот процесс стараются автоматизировать. Если поговорить с людьми, которые занимаются тестированием интерфейсов, походить по конференциями, становится понятно, что в мире веб-тестирования правит Selenium, а в качестве организации кода подавляющее большинство используют Page Object.


Вот только мне, как программисту, этот паттерн и код, который я видел у разных команд, почему-то никогда не нравился — в голове звучали буквы SOLID. Но я уже был готов смириться с тем, что тестировщики пишут код, как им удобно, из-за отсутствия альтернатив, как где-то год назад, на Angular Connect, услышал я доклад, посвящённый тестированию Angular приложений c использованием Screenplay паттерна. Теперь хочу поделиться.


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

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность