Search
Write a publication
Pull to refresh
156
0
Виктор @TyVik

Full-stack developer

Send message

Примитивы синхронизации в Python Asyncio: Исчерпывающее руководство

Level of difficultyHard
Reading time14 min
Views19K

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

Что было дальше?

Книга «BPF: профессиональная оценка производительности»

Reading time19 min
Views3.1K
image Привет, Хаброжители!

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

Брендан Грегг — эксперт и пионер проекта BPF — представляет более 150 готовых инструментов анализа и отладки, рекомендации по их применению, а также пошаговые инструкции по разработке ваших собственных инструментов. Вы узнаете, как анализировать процессоры, память, дисковый ввод/вывод, файловую систему, сети, языки программирования, приложения, контейнеры, гипервизоры, безопасность и ядро. Вы сможете выработать глубокое понимание того, как улучшить буквально любую Linux-систему или приложение.
Читать дальше →

Импортозамещение сканеров WEB уязвимостей: обзор актуальных DAST решений

Level of difficultyEasy
Reading time10 min
Views8.4K

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

Поговорим о проблеме выбора DAST, который бы смог удовлетворить потребности регулярного поиска уязвимостей в web-инфраструктуре компании. Опытные пентестеры, специализирующиеся на web-приложениях, наверняка возразят: какой тут может быть выбор? Burp Suite PRO наше все! И будут правы, но на прошлом PHD мне в руки попала Позитивная карта импортозамещения (https://www.ptsecurity.com/upload/corporate/ru-ru/analytics/positive-research-2023-poster.pdf), где Positive Technologies предложили заместить иностранные DAST: Burp Suite Pro, Acunetix, Inviciti — своим решением PT BlackBox. Но чтобы коммерческим продуктам не быть едиными, заодно добавим в сравнение продукты open source.

Разберемся, импортозамещаться или приобретать через серые схемы иностранный Burp Suite Pro. Или вообще оставаться на бесплатном open source.

Читать далее

Простой ORM для sqlite3

Level of difficultyMedium
Reading time12 min
Views16K

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

Не бывало ли вам интересно, как работает изнутри такая идейно простая концепция? Благодаря чему достигается удобство работы? Сегодня мы напишем ORM самостоятельно и узнаем, какие инструменты python нам для этого понадобятся.
Читать дальше →

Знакомство с IPv6 на практике

Level of difficultyEasy
Reading time20 min
Views57K

В 2023 году люди боятся многих новых для них вещей, например, systemd, SELinux, IPv6 и др. От этих вещей люди стараются избавиться, отключить, удалить. Об этом написано во множестве любительских мануалов в интернете, коим может являться и этот. Далее речь пойдёт о протоколе интернета IP версии 6, для краткости — IPv6.

Целью данной заметки показать, что IPv6 не намного страшней того IPv4, который вы сейчас используете. Он способен решить все те же ваши задачи, что вы решали с помощью старого протокола, а также упростить себе жизнь за счёт более простой настройки сети. Кроме того, возможно, даже сейчас используете новый протокол даже не подозревая об этом.

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

Читать далее

Web Workers в JavaScript: Параллельные вычисления и улучшение производительности

Level of difficultyMedium
Reading time8 min
Views20K

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

Есть случаи, когда эту проблему можно решить с помощью Web Workers, про них я и расскажу вам далее!

Бустануть производительность

Поднимаем на OpenWrt клиент прокси VLESS, Shadowsocks, Shadowsocks2022. Настройка sing-box и tun2socks

Level of difficultyMedium
Reading time10 min
Views177K

Практическое руководство описывающее, как поднять на роутере Shadowsocks, VMess, VLESS, Trojan и даже SOCKS5 proxy.

Трафиком на роутере удобно управлять, когда у туннеля есть свой интерфейс. С одной стороны, есть Wireguard и OpenVPN, которые предоставляют сетевые интерфейсы. C другой стороны есть, например, SOCKS5 прокси и вытекший из него Shadowsocks, которые работают на другом уровне. Настраивая их мы получаем порт, а не интерфейс.

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

Читать далее

Миграция с Vue 2 на Vue 3: Новые Фичи

Reading time7 min
Views8.7K

В этой статье погрузимся с головой в захватывающий мир новых возможностей Vue 3.

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

Без лишних отлагательства приступим к делу!

Читать далее

Сборка мусора: как это делается в системном программировании

Level of difficultyMedium
Reading time9 min
Views10K
image

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

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

Объединим две эти цели – и обнаружим, сколько же существует странных и магических методов для неблокирующего совместного использования данных в разных потоках. Давайте поговорим об одном из этих методов – «чтение-копирование-запись» (RCU).
Читать дальше →

Операторы в Kubernetes

Level of difficultyHard
Reading time8 min
Views16K

Ручные изменения в кластере доставляют одну лишь головную боль. А чтобы от них избавиться, используются операторы, в частности K8s. Что это такое? И самое главное, как его написать?

Меня зовут Дмитрий Самохвалов, я архитектор в компании КРОК. Пробовал себя в разработке, инфраструктуре и тимлидерстве. Расскажу про архитектуру и внутреннее устройство оператора и покажу как создать свой оператор на Go. Все остальные вопросы можно задать мне в Телеграм.

Читать далее

Диск – это лава. Исследуем методы выполнения пейлоада в памяти

Reading time22 min
Views11K

Привет, Хабр! Меня зовут Миша, я работаю в МТС RED в команде тестирования на проникновение на позиции эксперта.

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

Ни для кого не секрет, что во время пентестов атакующим приходится использовать готовые инструменты, будь то нагрузка для Cobalt Strike, серверная часть от поднимаемого прокси-сервера или даже дампилка процесса lsass.exe. Что объединяет все эти файлы? То, что все они давным-давно известны антивирусам, и любой из них  не оставит без внимания факт появления вредоноса на диске.

Заметили ключевой момент? Факт появления вредоноса на диске. Неужели если мы сможем научиться выполнять пейлоад в оперативной памяти, то пройдём ниже радаров антивирусов? Давайте разберёмся с техниками выполнения файлов полностью в памяти и увидим, насколько жизнь атакующих станет проще, если они научатся работать, не затрагивая диск.

Читать далее

История одного наследства: как я с помощью OSINT и социальной инженерии заскамил скамера

Level of difficultyEasy
Reading time12 min
Views29K

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

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

Читать далее

Пилим монолит и рисуем архитектуру запрещённой сети: лучшие выпуски IT-шоу «Заходят два архитектора в бар»

Reading time2 min
Views9.4K

Слёрм — это учебный центр для IT-специалистов и инженеров. Кроме курсов, мы делаем несколько спецпроектов, и шоу «Заходят два архитектора в бар…» — один из них. Шоу выходит в прямом эфире раз в неделю: приглашённый эксперт выступает с 20-минутным докладом на архитектурную тему, а следующие гости становятся его оппонентами и дополняют озвученные идеи или горячо спорят с ними.  

Зрители тоже участвуют — задают вопросы в чате, обсуждают полезные идеи и знакомятся. 

Предлагаем посмотреть 5 лучших выпусков шоу «Заходят два архитектора в бар…». Там обсуждаем дизайн Web API, Rabbit и Kafka, блокировки в PostgreSQL, а ещё рисуем архитектуру запрещённой соцсети с картинками.

Читать далее

Нейросети в качестве художника: всё лучше и лучше. Подборка инструментов для создания изображений

Reading time3 min
Views14K

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

Читать далее

Криптография с открытым ключом: ключи RSA

Level of difficultyMedium
Reading time23 min
Views28K

Уверен, что вы хотя бы раз создавали пару ключей RSA, напримет, потому, что вам нужно было подключиться к GitHub, и вы хотели избежать необходимости вводить свой пароль каждый раз. Вы добросовестно следовали инструкциям по созданию SSH-ключей, и через пару минут всё было готово.

Но знаете ли вы, что именно вы делали? Углублялись ли вы в детали процесса?

Знаете ли вы, что содержится в файле ~/.ssh/id_rsa? Почему ssh создает два файла с разным форматом? Замечали ли вы, что один файл начинается со слов ssh-rsa, а другой — с -----BEGIN RSA PRIVATE KEY----- ? Вы замечали, что иногда в заголовке второго файла отсутствует часть RSA и просто написано BEGIN PRIVATE KEY?

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

Читать далее

Gryffine — история одного пет-проекта

Reading time11 min
Views11K

Как-то раз один знакомый сисадмин пожаловался мне на жизнь суровую. Он рассказал об одном инциденте в его конторе. Стоит оговориться, что контора небольшая и такой сущности как отдельный специалист по информационной безопасности там нет. Инцидент стандартный до банальности. Случайно заметили аномальную активность на линуксовых серверах. Подозрения сразу же подтвердились выводом команды who, который показал подключение по ssh с прокси-сервера с IP одной маленькой, но очень гордой страны. Дальше было то, что и положено в таких ситуациях, а именно: сменить доступы, понять откуда зараза по сети пошла, и что именно она делала. Доступы сменили, а вот когда полезли в логи, с удивлением обнаружил, что они уже несколько дней как пишутся в /dev/null, то есть у злоумышленника на сервере был root-доступ. Позже выяснили, что причиной была утечка пароля от аккаунта одного из сотрудников с доступом к sudo.

История, в общем-то, типичная, тысячи таких. Но меня она зацепила и побудила задаться вопросом: а как, собственно поймать хакера в тот самый момент, когда он попал на сервер впервые и пытается там закрепиться? Возможно, существуют enterprise-решения аудита и мониторинга входа на удалённую машину, но даже крупный бизнес с неохотой тратится на инфобез. Не говоря уже о небольших конторах с IT-отделом в 3,5 человека. Будем делать всё сами, благо в линуксах требуемая функциональность есть практически из коробки.

Читать далее

Умный дом на Raspberry Pi и Home Assistant: добавляем диммеры и реле Wiren Board

Level of difficultyEasy
Reading time10 min
Views38K

К нам обратился Петр из Минска, который решил рассказать о своем опыте сборки умного дома. Он выбрал популярную платформу Raspberry Pi и интегрировал домашние устройства в Home Assistant.

Но со светом возникли проблемы: Петр запланировал везде диммирование, причем диммеры должны работать, даже когда контроллер выключен. Здесь как раз подошли модули Wiren Board. Но как сделать так, чтобы эти модули заработали под Home Assistant?

Петр установил шлюз Modbus-Ethernet и написал на Python интеграцию модулей Wiren Board в Home Assistant.

Мы посетили умный дом Петра и спешим поделиться с читателями подробностями.

Читать далее

Книжный кружок. Рецензия на книгу «Микросервисы от архитектуры до релиза»

Level of difficultyEasy
Reading time4 min
Views10K

Всем прив :-)

Дочитал недавно книжку «Микросервисы от архитектуры до релиза» (в оригинале наз: «Microservices Up & Running») Вышла она в конце 2020, недавно ее перевели. В издательстве «Питер» периодически делают щедрые скидосы на книжки, и я решил порадовать себя и накупил кучу). Вообще люблю книги в бумажном виде, особенно фундаментальные книги — те, к которым я еще неоднократно возвращаюсь и из которых черпаю идеи. Более хардовые и с кодом я предпочитаю электронные.

«Microservices Up & Running» написали два чувака: Ронни Митра и Иракли Надареишвили. Оба они не понаслышке поели финтех энтерпрайза и имеют очень богатый опыт, занимаются консалтингом и пишут книги. Ронни — соавтор «Continuous API Management», а также вместе с Иракли участвовал в написании «Microservices Architecture». Ронни занимается консалтингом финтех компаний, а Иракли сейчас Banking Platform Managing Director в JPMorgan Chase & Co, а до этого был вице‑президентом по инновациям в Capital One Financial и возглавлял команды, ответственные за создание современной банковской платформы. В общем, это все можно посмотреть в их профиле в Линкедине. Им явно есть чем поделиться.

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

Читать далее

Большая подборка открытых API

Level of difficultyEasy
Reading time2 min
Views71K

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

Читать далее

Алгоритмы балансировки нагрузок

Level of difficultyMedium
Reading time8 min
Views51K

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

В этом посте мы рассмотрим способы, которыми один балансировщик нагрузок может распределять HTTP-запросы на множество серверов. Мы начнём снизу и проделаем весь путь вверх до современных алгоритмов балансировки нагрузок.
Читать дальше →

Information

Rating
9,172-nd
Location
Краснодар, Краснодарский край, Россия
Date of birth
Registered
Activity

Specialization

Backend Developer, Software Architect
Lead
Python
PostgreSQL
Linux
Docker
Kubernetes
RabbitMQ
Elasticsearch