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

Full-stack developer

Send message

Памятка РП. Микросервисная архитектура

Level of difficultyMedium
Reading time75 min
Views25K

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

Читать далее

Анализ безопасности Wi-Fi: атаки на WPA2-Personal / Enterprise и методология взлома WPA3

Reading time13 min
Views49K

Подробное исследование методологии взлома протоколов WPA2-Personal / Enterprise и WPA3: какие атаки и уязвимости существуют, и какой инструментарий применяется для их эксплуатации.

Читать далее

Автоматизируем сборку и деплой приложения в GitLab CI/CD: подробное руководство с примерами

Level of difficultyEasy
Reading time22 min
Views41K

При разработке приложений рано или поздно наступает момент, когда заниматься развёртыванием вручную становится затратно и неудобно. Как следствие на помощь приходит автоматизация этого процесса с помощью специально настроенных пайплайнов непрерывной интеграции и непрерывной доставки (Continuous Integration & Continuous Delivery — CI/CD). Для разных систем управления репозиториями исходного кода существуют свои способы настройки CI/CD.

В этой статье мы рассмотрим, как использовать GitLab для организации автоматической сборки и деплоя приложения в кластер Kubernetes. Сам кластер работает под управлением Deckhouse Kubernetes Platform, а автоматизировать процесс будем с помощью werf — Open Source CLI-утилиты, организующей полный цикл доставки приложения в Kubernetes и использующей Git как единый источник истины для состояния приложения, развёрнутого в кластере.

Читать далее

Что ты такое, dhclient?

Reading time19 min
Views52K

Сетевой стек Linux не прост даже на первый взгляд: приложение — в юзерспейсе, а всё, что после сокета, — в ядре операционки. И там тысяча реализаций TCP. Любое взаимодействие с сетью — системный вызов с переключением контекста в ядре.

Чтобы лишний раз не дёргать ядро прерываниями, придумали DMA — Direct Memory Access. И это дало жизнь классу софта с режимом работы kernel bypass: например при DPDK (Intel Data Plane Development Kit). Потом был BPF. А за ним — eBPF. 

Но даже помимо хаков работы с ядром есть такие штуки, как sk_buff, в которой хранятся метаданные всех миллионов протоколов. Есть NAPI (New API), которая призвана уменьшить число прерываний. Есть 100500 вариантов разных tables.

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

Начать погружение

Серьги из матрицы светодиодов

Reading time7 min
Views11K

Изначально я представлял LED Industrial Piercing [перевод на Хабре] как проект, специально рассчитанный на использование светодиодов 0201. В конечном итоге они оказались совершенно не нужны. Светодиоды 0201 слишком малы! Очевидно, я должен был двинуться глубже, поэтому целью нового проекта стало размещение как можно большего их количества на поверхности серёжки-гвоздика.

Читать далее

«Захватить флаги!»: решаем задачи с DiceCTF 2024 Quals

Level of difficultyEasy
Reading time9 min
Views2.9K

Привет, Хабр! В начале февраля команда DiceGang провела квалификацию DiceCTF 2024 Quals. Это был Jeopardy-турнир длительностью 48 часов. Он состоял всего из пяти направлений: crypto, misc, pwn, rev и web. Как специалисту по информационной безопасности, мне нравится участвовать в подобных мероприятиях. Под катом расскажу, как я решил несколько задач из последней категории.

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

Как автоматизировать построение архитектурных схем в большой микросервисной системе

Level of difficultyMedium
Reading time8 min
Views22K

Если у вас есть большая система, состоящая из множества микросервисов, то вы наверняка задавались вопросом: «Что сделать, чтобы архитектурная схема всей системы была всегда на 100% актуальной?».

Обычно, в компаниях есть свои практики формирования архитектурных схем и ведения документации, что частично решает поставленный вопрос. Но проблема такова, что часто схемы со временем начинают расходиться с реальностью: новые интеграции добавляются, а старые — уходят, а актуализация схем вручную происходит не всегда своевременно.

Чтобы решить проблему мы автоматизировали отрисовку схем опираясь на метаданные IT-систем. Мы создали отдельный микросервис, который этим занимается и назвали его «Architect». О том как это происходит и как работает Architect я расскажу в этой статье, а также дам несколько советов, которые помогут внедрить то же самое у вас в компании.

Читать далее

Теория игр за 15 минут

Level of difficultyEasy
Reading time15 min
Views73K

Многие из вас, я уверен, слышали о теории игр в какой-то момент своей жизни. Если вы хотите выглядеть умным и произвести впечатление на свою девушку — просто упомяните «игру с нулевой суммой» или «эволюционную стратегию», и ваши шансы отвести её домой сегодня вечером только что подскочили на 50%. Или вы можете использовать теорию игр, чтобы принимать решения в инвестировании своих денег (чтобы их полностью потерять и разориться) или, например решая, на какой девушке жениться (что также очень вероятно вас разорит). Как видите, это очень полезная теория.

Чтобы казаться умным - достаточно выучить эти пару выражений, но чтобы на самом деле что-то понимать - придется разобраться. Оказывается, это не так уж сложно и довольно интересно. Давайте посмотрим.

Читать далее

Как самостоятельно избавиться от тревоги и беспокойства: техники самопомощи

Level of difficultyEasy
Reading time17 min
Views31K

«Уже семь часов, а она должна была вернуться в шесть. Что случилось? Неужели что-то ужасное?» – тревога гудит в голове и рисует самые ужасные варианты. Как избавиться от тревоги и научиться не переживать без толку. Разбираем способы помочь себе самостоятельно: они помогут от сильной тревоги, тревожных мыслей и привнесут в жизнь больше радости и спокойствия.

Читать далее

Правда и мифы об энтропии. Как работает второй закон термодинамики?

Level of difficultyMedium
Reading time22 min
Views57K

Энтропия – одна из самых важных и в то же время трудных для понимания физических концепций, без которой невозможно представить себе научную картину мира. Энтропия является неотъемлемым свойством макроскопических систем, но, в отличие от температуры, давления или объёма, её нельзя измерить с помощью приборов. Ситуацию усугубляет тот факт, что у энтропии есть множество определений, на первый взгляд никак между собой не связанных. В термодинамике это мера необратимого рассеяния или бесполезности энергии, в статистической физике – вероятность осуществления некоторого макроскопического состояния системы, в теории динамических систем – мера хаоса в поведении системы, в теории информации – мера неопределённости источника сообщений, определяемая вероятностями появления тех или иных символов при их передаче. Создаётся впечатление, что гуманитарию разобраться в этом без знания формул – непосильная задача. Но я покажу обратное. Сразу оговорюсь, что в данной статье будут рассмотрены только термодинамический и статистический аспекты энтропии, а о том, как энтропия связана с информацией, я расскажу как-нибудь отдельно.

Читать далее

Как организовать систему оплаты в компаниях, занимающихся разработкой

Level of difficultyMedium
Reading time16 min
Views7.2K

Любая программная компания рано или поздно сталкивается с проблемой должностей. Некоторые организации довольствуются «плоской» системой, но в отсутствие системы должностей возникают теневые иерархии, что на самом деле хуже. Должности дают чёткую демаркацию ожиданий от конкретного сотрудника. Например, гораздо проще возложить на ведущего разработчика ответственность за техническое руководство, если эта роль чётко определена. Без определений должностей наверх будут подниматься самые громкие, а тихие и вдумчивые останутся незамеченными.

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

Не платите за то, сколько людей под руководством или сколько строк кода они написали. Платите им за генерируемые результаты.

Эта философия сильна и наделяет свободой. Неважно, если вы сотрудник, вносящий индивидуальный вклад (individual contributor, IC), занимаетесь техническим руководством или управлением командой. Важно то, насколько ваш вклад влияет на прибыль бизнеса.

В этом посте предлагается многоуровневая система, которую можно применять к IC, техническим руководителям и руководителям команд.
Читать дальше →

Синхронизация локальных изменений с docker/kubernetes контейнером

Level of difficultyEasy
Reading time3 min
Views11K

Салют!

Хочу рассказать вам про такие замечательные инструменты как docker compose(быть точнее про новую возможность watch), skaffold, tilt.

Рассказать для чего они полезны, как пользоваться и с примерами.

Читать далее

Как стать VPN провайдером за один вечер

Level of difficultyMedium
Reading time13 min
Views183K

Рассказываю о своём опыте использования Xray (с протоколом VLESS-Reality) - одного из лучших решений для преодоления интернет-цензуры на сегодняшний день. Я потратил много времени на то, чтобы разобраться с ним - теперь вам достаточно одного вечера, чтобы поднять свой сервер на несколько десятков пользователей, c xray на борту!

скрипт ex.sh для простой настройки и установки; есть поддержка Docker

легко добавлять пользователей; клиентские конфиги в форме url-ссылок

правильные конфиги: скрытность + удобство

трафик популярных российских сайтов идёт напрямую, a не через сервер

для xray есть приложения под все популярные ОС - делюсь инструкциями

только https, нет udp; торренты через сервер блокируются по возможности

мой проект на гитхабе: easy-xray

Интересны детали? Добро пожаловать под кат

Security code review.  Подходы и инструменты AppSec инженера

Level of difficultyMedium
Reading time3 min
Views2.6K

Для поиска уязвимостей в приложениях существует множество инструментов. SAST, DAST, IAST, SCA помогают в этом процессе, но часто не покрывают целые категории уязвимостей.

Часть уязвимостей эффективнее искать в коде во время ручного ревью и пентеста. 
В этой статье остановимся на ревью кода.

Читать далее

Structurizr, описание, перевод (часть 1/3)

Level of difficultyMedium
Reading time9 min
Views6.3K

В данной статье содержится вольный перевод документации по Structurizr.

Из-за большого объема информация разделена на три статьи:

общее описание языка (эта статья);

синтаксис;

книга рецептов.

Читать далее

Как мы уложили компьютерный мультик в 8 кБ

Reading time16 min
Views14K

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

В апреле 2023 года, спустя несколько месяцев работы, мы, наконец, выкатили ленту Барашек и цветок. Можете сами скачать его или проследить на YouTube ход выполнения программы.

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

Читать далее

Умный многоквартирный дом «Булычев» класса А: первое знакомство

Level of difficultyEasy
Reading time6 min
Views13K

Спрос на квартиры с умными функциями продолжает расти. Но и покупатели, и девелоперы понимают умные функции по-разному. Как быть?

На помощь приходит разделение умных домов на классы от «‎Единого ресурса застройщиков»‎. Высший класс А получают лишь немногие многоквартирные дома в России. К счастью, нам как раз удалось в таком побывать.

Умный дом «Булычев» пока не сдан, но для посещения открыта тестовая зона на одном из этажей. Мы предлагаем отправиться вместе с нами на экскурсию и посмотреть, какие умные функции получит покупатель квартиры в этом доме.

Интересно? Ныряйте под кат.

Читать далее

Как прогнозировать время выполнения задач

Level of difficultyHard
Reading time20 min
Views47K

Привет! Меня зовут Павел Ахметчанов, я руководитель направления улучшения процессов разработки. В статье расскажу про часто используемые методики оценок задач и есть ли в них ошибки. Посмотрим, как правильно ставить вопросы при оценке. Узнаем, что собой представляет время решения задач, а это далеко не очевидная вещь. Попробуем изменить свое мышление и получим рецепт для определения времени решения задач. 

Если спросить любого начинающего исследователя этой темы «А зачем нам оценка?», он скажет, что постоянно задают вопрос «Когда вы выполните эту задачу?», на который и надо ответить с помощью этой оценки. А что, если сам вопрос задан неверно?

Читать далее

Как работает управление памятью в Rust без сборщика мусора

Level of difficultyMedium
Reading time8 min
Views14K

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

Читать далее

Information

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

Specialization

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