Pull to refresh
10
0
Алексей @mrBuG

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

Send message

Как мы делаем опенсорс курсы для программистов от программистов

Level of difficultyEasy
Reading time8 min
Views31K
Мы разочаровались в курсах по программированию и поэтому сделали свои собственные. Не для вайтишников, а для типичных разрабов. В процессе нас хакнул инфлюенсер и забанил сервер телеграма.

Покоцанные, но не сломленные, мы представляем проект, над которым работали полтора года по ночам. Курсы по программированию с задачами в online IDE и прагматичной теорией. Никаких сертификатов и гарантий трудоустройства. Сплошной хардкор и опенсорс!


Читать дальше →
Total votes 116: ↑123.5 and ↓-7.5+131
Comments76

Как работает multiprocessing в Python под капотом

Level of difficultyHard
Reading time12 min
Views7.3K

Я довольно давно пишу на Python и во многих проектах использовал multiprocessing — пакет стандартной библиотеки языка Python, который предоставляет интерфейс для работы с процессами, очередями, пулами процессов и многими другими удобными инструментами для параллельного программирования. В какой-то момент я понял, что мне не хватает более детального понимания работы этой библиотеки.

Мне захотелось залезть в исходники multiprocessing, разобраться и заодно написать статью. Данная статья в основном рассчитана на новичков в Python и тех, кто хочет подробнее разобраться в том, как именно создаются процессы и пулы в Python и погрузиться в детали реализации.

Читать далее
Total votes 17: ↑17.5 and ↓-0.5+18
Comments2

Облако для тех, кому нельзя в облака: как мы в ОТП Банке развернули закрытое облако на платформе Яндекса

Level of difficultyHard
Reading time28 min
Views5K

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

И тем не менее мы в ОТП Банке полтора года назад взялись за эту задачу — и сейчас в Yandex Cloud чувствуем себя отлично. Привет, я из трайба IT4IT ОТП Банка. Мы занимались разработкой нашего закрытого облака. Под катом расскажу, зачем нам облако понадобилось, почему собственное решение не устроило и как мы выполнили требования Управления информационной безопасности (УИБ) никого не впускать и не выпускать — не забыв при этом сделать облако мощным инструментом для наших разработчиков.

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

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

Level of difficultyMedium
Reading time18 min
Views2.8K

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

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

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

Как избавиться от нестабильных тестов

Level of difficultyMedium
Reading time10 min
Views4K

Устали от нестабильных тестов?

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

Читать далее
Total votes 15: ↑15 and ↓0+15
Comments6

Личный прокси для чайников: универсальный обход цензуры с помощью VPS, 3X-UI, Reality/CDN и Warp

Level of difficultyMedium
Reading time27 min
Views112K

> С 10 апреля 2024, 3 месяца спустя,
> данная статья заблокирована РКН на территории РФ,
> но доступна с IP других стран, а также через веб-архив.

На фоне прошлогоднего обострения цензуры в РФ, статьи автора MiraclePTR стали глотком свободы для многих русскоязычных айтишников. Я же хочу приоткрыть дверь к свободной информации чуть шире и пригласить «не‑технарей» («чайников»), желающих поднять личный прокси‑сервер для обхода цензуры, но дезориентированных обилием информации или остановленных непонятной технической ошибкой.

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

Статья рассчитана на «чайников», не знакомых с предметной областью. Однако и люди «в теме» могут найти нечто полезное (например, чуть более простую настройку проксирования через CloudFlare без необходимости поднимать nginx на VPS).

Если у вас ещё нет личного прокси для обхода цензуры — это знак.

Читать далее
Total votes 113: ↑111 and ↓2+109
Comments284

Логи из docker compose / docker swarm в Grafana / Loki быстро и просто

Level of difficultyMedium
Reading time19 min
Views19K

Хочу показать как развернуть готовый и полностью работающий стек мониторинга Grafana + Loki + Prometheus + Pushgateway + Promtail за пару минут (в прямом смысле этого слова), без необходимости устанавливать на машину дополнительное ПО (плагины docker и плагины логирования) и собирать логи со всех контейнеров машины (или сразу со всех нод, в случае с swarm).

Читать далее
Total votes 24: ↑24 and ↓0+24
Comments21

Как тестировать без требований? Или как убедить разраба и себя, что это баг

Level of difficultyEasy
Reading time3 min
Views5.7K

Всем привет, это моя первая статья по тестированию. До этого я писал от лица Scrum-мастера, а теперь уже и от лица QA. В тестировании я уже более 2-х лет. Работал на двух проектах одновременно, и было супер весело менять проект на протяжении дня: утром ты тестируешь веб-сервис, а вечером со студентами делаешь тест-план по мобильному приложению. Не жизнь, а сказка!

Из названия мы с вами понимаем, что тема статьи интересна и, как воздух, необходима.

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

Не будем петь серенады, как это сложно, и приступим к делу.

Вас посвящают в суть проекта, и главный шаг - уточнить у аналитика или того героя, кто выполняет эту роль, "Есть какая-нить дока?" (далее - спецификация).

Какая может быть спецификация на проекте? Будьте внимательны, я не использую термин документация, потому-что дока - это текстовый формат, а в виде спецификации может выступать:

1) документация; обновленная в последний раз в 90-х

2) макеты; вообще не похожи на прод

3) тикеты в Jira; обычно там один заголовок, но верим в чудо

4) user-story;

5) тест-кейсы, чек-листы; если был тестировщик до

6) звонок с владельцем продукта; Product owner

Читать далее
Total votes 9: ↑6 and ↓3+3
Comments15

Паттерны автоматизации и архитектура автотестов

Level of difficultyEasy
Reading time7 min
Views11K

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

Читать далее
Total votes 10: ↑10 and ↓0+10
Comments7

Cisco TRex на практике

Level of difficultyMedium
Reading time15 min
Views4.5K

В данной статье описаны процесс работы с программным генератором сетевого трафика TRex и методика тестирования переключений.

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

Композиционное тестирование: новый подход к качеству IT-продуктов

Level of difficultyMedium
Reading time9 min
Views3.9K

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

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

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

Локальные нейросети. Аналог ChatGPT-3.5 на домашнем ПК: OpenChat 7B превосходящая 70B, DeepSeek для кода уровня ChatGPT

Reading time8 min
Views79K

Есть много локальных аналогов ChatGPT, но им не хватает качества, даже 65B модели не могут конкурировать хотя бы с ChatGPT-3.5. И здесь я хочу рассказать про 2 открытые модели, которые всё-таки могут составить такую конкуренцию.

Речь пойдет о OpenChat 7B и DeepSeek Coder. Обе модели за счет размера быстры, можно запускать на CPU, можно запускать локально, можно частично ускорять на GPU (перенося часть слоев на GPU, на сколько хватит видеопамяти) и для такого типа моделей есть графический удобный интерфейс.

И бонусом затронем новую модель для качественного подробного описания фото.

UPD: Добавлена информация для запуска на Windows с ускорением на AMD.

Читать далее
Total votes 107: ↑105 and ↓2+103
Comments87

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

Level of difficultyEasy
Reading time2 min
Views10K

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

Смотреть доклады →
Total votes 12: ↑11 and ↓1+10
Comments0

OpenConnect: недетектируемый VPN, который вам понравится

Level of difficultyMedium
Reading time15 min
Views222K

Я уже написал здесь много статей на тему прокси-протоколов и прокси-клиентов, которые очень сложно детектировать и заблокировать, и которые используют пользователи в Китае, Иране, Ираке, Туркменистане, и теперь вот в России (мы здесь в отличной компании, правда?). Но довольно часто мне в комментариях писали, мол, это все отлично, но мне нужен именно VPN для целей именно VPN - доступа в частные локальные сети, либо для соединения клиентов между собой, и желательно так, чтобы его не заблокировали обезьяны с гранатой. Поэтому сегодня мы поговорим именно о VPN.

Классические OpenVPN, Wireguard и IPSec отметаем сразу - их уже давно умеют блокировать и блокировали не раз. Модифицированный Wireguard от проекта Amnezia под названием AmneziaWG — отличная задумка, но есть одно но...

Читать далее
Total votes 325: ↑324 and ↓1+323
Comments342

Принципы непрерывного рефакторинга

Level of difficultyHard
Reading time23 min
Views11K

Работа со старым кодом для многих команд является частью повседневных обязанностей. За свою карьеру я видел и применял разные способы борьбы с тяжестью легаси. Они обычно сводились к одному из трёх основных сценариев:

«Работает — не трогай!»: вообще забить на чистки и ничего не менять. В некоторых случаях валидный подход. Но в коде, который приходится менять хотя бы даже эпизодически (фиксы багов, мелкие доделки, смена окружения и т. п.), со временем неизбежно приводит к катастрофе. Вам надо что‑то поменять в коде, и это оказывается невозможно сделать легко. Даже за тривиальные изменения приходится платить большой кровью.

«Я прочитал Роберта Мартина»: включаем чистки в обычный код. Надеваем галстук бойскаута и чистим код прямо по ходу работы над текущими задачами. Отправляем его коллегам на ревью и ждём несколько дней, покуда они не разберутся, где заканчиваются рефакторинги и начинаются непосредственно изменения по задаче. Или же уходим по кривой дорожке рефакторингов в тёмный лес и продалбываем к чертям все изначальные сроки. Когда начинаешь приводить код к идеалу, не всегда бывает так легко остановиться!

«Нужен порядок и учёт»: делаем отдельные коммиты с чистками, но нерегулярно — только когда в дело берётся соответствующий тикет. Правда, тикеты на рефакторинг почему‑то регулярно получают самый низкий приоритет во время планирования и маринуются в беклоге месяцами. Но что уж тут поделать?

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

За прошедший год я нащупал и отточил ещё один подход, который лишён указанных недостатков. И теперь готов поделиться им с вами.

Читать далее
Total votes 22: ↑22 and ↓0+22
Comments20

Моя б̶е̶з̶умная колонка или бюджетный DIY голосового ассистента для умного дома

Level of difficultyEasy
Reading time7 min
Views28K

В свете широкого внедрения систем домашней автоматизации возникает потребность в более естественном взаимодействии с «умным домом». Как средство натурального взаимодействия между человеком и машиной, голосовой интерфейс заслуженно занимает высокую популярность. В данной статье я поделюсь своим опытом создания бюджетного автономного голосового ассистента для систем умного дома.
Читать дальше →
Total votes 87: ↑87 and ↓0+87
Comments34

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

Level of difficultyMedium
Reading time5 min
Views21K

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

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

Читать далее
Total votes 16: ↑13 and ↓3+10
Comments7

10 лучших практик логирования в Python

Level of difficultyEasy
Reading time19 min
Views29K

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

В этой статье мы рассмотрим лучшие практики логирования в Python. Следуя им, вы сможете обеспечить информативность, практичность и масштабируемость генерируемых логов. Давайте начнём!

Читать далее
Total votes 72: ↑71 and ↓1+70
Comments19

concurrent.futures в Python

Level of difficultyEasy
Reading time11 min
Views14K

Привет, Хабр! Сегодня мы взглянем на одну из самых интересных библиотек в Python для работы с параллельным выполнением задач - concurrent.futures.

Каждый разработчик сталкивается с ситуациями, когда необходимо выполнять задачи параллельно. Это может быть I/O-операции, которые блокируют основной поток, или вычисления, требующие большого объема процессорных ресурсов. Здесь на помощь приходит concurrent.futures - модуль, предоставляющий высокоуровневый интерфейс для асинхронного и параллельного выполнения задач.

Какие преимущества предоставляет этот модуль?

Читать далее
Total votes 19: ↑18 and ↓1+17
Comments3

Лидерство в тестировании: тестирование, основанное на рисках

Level of difficultyMedium
Reading time11 min
Views3.7K

 

Риски, если они материализуются, оказывают негативное влияние на наши проекты. Управление рисками — это осмысление существующих рисков и принятие мер по снижению их вероятности, устранению или уменьшению их влияния на цели наших стейкхолдеров.

С точки зрения тестирования и обеспечения качества, риск — это "тип неудачи, о котором следует беспокоиться”. Тестирование на основе рисков — это практика моделирования возможных режимов отказа системы как рисков продукта для определения объема тестирования, масштабирования и установления приоритетов.

Читать далее
Total votes 2: ↑1 and ↓10
Comments0
1
23 ...

Information

Rating
Does not participate
Location
Томск, Томская обл., Россия
Date of birth
Registered
Activity