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

Full-stack developer

Send message

Создаем свой VPN с защищенным от блокировок протоколом AmneziaWG, или WireGuard на максималках

Reading time5 min
Views183K


Всем привет! Возможно уже совсем скоро разные новостные и  IT-ресурсы будут подчищать информацию о способах обхода блокировок. А пока этого не случилось, запасаемся полезными гайдами и разворачиваем свои собственные VPN с защищенными от блокировок протоколами. Расскажу как это сделать, как изменилась Amnezia и как мы защитили WireGuard от блокировок.

Читать далее

MLOps-инструменты, обзоры рынка и тренды потоковой обработки данных

Level of difficultyMedium
Reading time6 min
Views4.9K

Привет, Хабр! В сегодняшнем дайджесте продолжаю делиться материалами, которые помогут вам лучше разобраться в темах ML, искусственного интеллекта и дата-аналитики. Какие перспективы у LLM и BI? Куда Amazon и Google инвестировали более $4 млрд? Как организовать работу аналитических команд? Отвечаем на вопросы в статье.

Еще больше полезных материалов по DataOps и MLOps — в Telegram-сообществе «MLечный путь».
Читать дальше →

Почему KRaft заменил ZooKeeper

Reading time12 min
Views23K

Зачем менять ZooKeeper на встроенный лог Apache Kafka® для управления метаданными? В этой статье вы узнаете, зачем нужна была эта замена, какие преимущества даёт протокол консенсуса на основе кворума, вроде Raft, и как работает контроллер кворума поверх протоколов KRaft.

Читать далее

Точечная маршрутизация по доменам на роутере с OpenWrt

Level of difficultyMedium
Reading time13 min
Views223K

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

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

Настроить роутер можно с помощью скрипта. Если вдруг не заведётся сразу, то другим скриптом можно найти, что не работает. Настройка с помощью Ansible никуда не делась, только модифицировалась и стала лучше.

Помимо инструкций по настройке туннелей Wireguard и OpenVPN, написал инструкцию по использованию технологий, которые помогут в обходе блокировок по протоколу: Shadowsocks, VLESS и прочими.

Читать далее

Распределённые транзакции

Level of difficultyMedium
Reading time10 min
Views61K

На собеседованиях на позицию middle/senior разработчика часто задают вопросы по распределенным транзакциям в микросервисной архитектуре.

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

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

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

Читать далее

Майнд-карта успешной физической трансформации. Питание. Тренировки. Мотивация

Reading time7 min
Views11K

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

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

Успехов тебе!

Читать далее

React Fiber & Concurrency Part 1 (2)

Level of difficultyMedium
Reading time9 min
Views11K

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

Тема разделена на две статьи. Первая статья расскажет о процессе обновления и внесения изменений в DOM. Вторая статья посвящена реализации не блокирующего рендеринга - Concurrent React. Данная статья является первой из двух.

Читать далее

15 ресурсов по Git. Что почитать/посмотреть?

Level of difficultyEasy
Reading time2 min
Views31K

Всем привет! В этот раз собрали подборку вспомогательных материалов для изучения Git. Удобство и гибкость сделали Git стандартом для большинства современных IT-компаний. Поэтому умение работать с ним критично для любого программиста.

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

Читать далее

Как я проектирую и разрабатываю расширения Python на Rust

Level of difficultyMedium
Reading time16 min
Views5.7K

В этой статье я хочу рассказать о том, как я проектирую комплексные расширения для Python на Rust с использованием PyO3 и почему я принимаю те или иные проектные решения.

Читать далее

Как вырастить солёную пирамидку

Reading time11 min
Views50K

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

Читать далее

Дополнительные контейнеры в Kubernetes и где они обитают: от паттернов к автоматизации управления

Level of difficultyMedium
Reading time5 min
Views8.6K

Всем известно, что pod в Kubernetes может включать в себя несколько контейнеров: для Service Mesh, работы с внешним хранилищем секретов, журналирования и т. д. В итоге это множество вызывает вопросы. Правильно ли использовать столько контейнеров? Как их изолировать от пользовательских приложений? Можно ли вообще исключить дополнительные контейнеры из пользовательских релизов?

Я Максим Чудновский, занимаюсь Synapse Service Mesh в СберТехе. Расскажу, какие есть паттерны применения дополнительных контейнеров в Kubernetes, как они могут помочь в платформенной инженерии, и, самое главное, как полностью автоматизировать процесс управления жизненным циклом таких контейнеров.

Поскольку тема контейнеров довольно объёмна, в этом материале коснусь того, какие виды дополнительных «полезных» контейнеров бывают и как добавлять их в Kubernetes так, чтобы развести релизные процессы прикладных и платформенных команд. А в следующей статье поговорим, как автоматизировать управление дополнительными контейнерами и управлять кластером через политики.

Читать далее

Xiaomi Mi Thermometer 2 не только Bluetooth, но и ZigBee

Level of difficultyMedium
Reading time4 min
Views108K

TL;DR: Да, можно программно изменить датчик для работы в сети Zigbee, достаточно по воздуху перезаписать прошивку.

Многим пользователям умного дома известен квадратный датчик температуры и влажности от Xiaomi LYWSD03MMC. Его очевидные плюсы — это LCD экран, подключение к системе умного дома MiHome и конечно же цена. Его без преувеличения можно назвать если не самым, то точно одним из самых дешевых "умных" датчиков, которые имеют интерфесы для подключения к умному дому. В данном случае это популярный bluetooth, который позволяет подключиться к датчику со смартфона и увидеть показания. Поэтому он завоевал своё место в сердцах строителей умных домов как дешевое и надёжное решение.

Читать далее

Изучаем веб-сервисы ChatGPT и пробуем программировать

Reading time9 min
Views9.9K


Прямого доступа к сервисам OpenAI в РФ, как известно, нет. Для работы с ChatGPT многие пользуются телеграм-ботами, чаще всего бесплатными. В основном, запросы к ним — непритязательные. Пользователи практикуются в английском и, не раздражая никого пробелами в орфографии, получают списком все свои ошибки. Можно задавать ботам относительно простые вопросы.

Но, боты, в подавляющем большинстве работают на версии GPT3.5, возможности которой ограничены. Поэтому даже на хороший, но не релевантный запрос можно получить очень странный ответ, который начинается чем-то вроде «Да, я просто языковая модель и не могу сделать того, что вы от меня хотите...» и т. д. Нельзя забывать и о том, что телеграм-бот едва ли сможет хранить контекст, размером более 4000 токенов.

Поэтому в некоторых случаях удобнее использовать именно веб-сервисы, у них функции побогаче.
Читать дальше →

Open-source блокнот Wolfram Language или как воссоздать минимальное ядро Mathematica на Javascript и не только

Level of difficultyMedium
Reading time20 min
Views8.6K

На Хабре уже проскакивали упоминания о совместимых или систем-копиях Wolfram Mathematica, но реализованных на других языках, скажем, Mathics. В качестве расширения этой ниши я представляю молодую систему, которая не только воспроизводит многие ключевые функции блокнота Mathematica с нуля, но и расширяет функционал гораздо дальше, чем там, где очертил его границы Стивен Вольфрам, создав эту потрясающую систему более 30-ти лет назад.

Читать далее

Скучный Python: повышаем качество кода

Reading time17 min
Views26K

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

Читать далее

Стань героем мемов! Делаем гифки со своим лицом с помощью нейросетей

Level of difficultyMedium
Reading time5 min
Views30K

Друзья, всем привет, сегодня я научу вас как создавать шикарные мемные гифки с вашим лицом с помощью дипфейк нейросети FaceFusion.

Читать далее

Wolfram Language JavaScript Frontend

Level of difficultyEasy
Reading time10 min
Views3.9K

Wolfram Language JavaScript Frontend - это проект, цель которого в создании бесплатной альтернативы для Mathematica с открытым исходным кодом, но со своими особенностями и преимуществами, а если точнее то в реализации пользовательского интерфейса для ядра Wolfram Language (WL). Ядро входит в состав Математики либо распространяется в виде бесплатной утилиты командной строки - Wolfram Engine. То есть данное приложение это именно пользовательский интерфейс для WL, а не попытка полностью переписать язык. Ниже будет демонстрация возможностей, а так же отличия от Mathematica и других приложений. Вам это точно будет интересно, если вам нравится подход к программированию, который используют такие платформы как Mathematica, Jupyter, NTeract, JupyterLab, DeepNote, ObservableHQ, Google Collab и некоторые другие.

Внимание! В статье много изображений!

Читать далее

Введение в библиотеку Diffusers и диффузионные модели

Level of difficultyEasy
Reading time16 min
Views15K

Diffusers — это библиотека от Hugging Face, которая позволяет работать с сотнями предобученных моделей класса Stable Diffusion для создания изображений и аудио.

Всегда хотели стать художником, но у вас лапки? :) Тогда Diffusers этот то, что вам нужно!

В этой статье рассмотрим основные возможности библиотеки, ее компонентов, а также моделей Stable Diffusion в целом.

ТК LLM is all you need | ТК Private Sharing | Курс: Алгоритмы Машинного обучения с нуля

Читать далее

Замешиваем файлы в тэги. Часть 3

Level of difficultyMedium
Reading time9 min
Views3.2K

Продолжаем создавать модуль ядра в Линукс на примере виртуальной файловой системы.

Часть 1: Описание задачи, Модуль ядра

Часть 2: Модуль ядра, Регистрация файловой системы

Часть 3: Inode, Lookup

Часть 4: Inode-операции: symlink, unlink

Что в результате получилось можно увидеть по ссылкам: демо-видео, код.

Продолжаем разбираться

Разбираем TLS по байтам. Где собаки зарыты?

Level of difficultyMedium
Reading time34 min
Views23K


Подключение к сайту бывает защищённым, а бывает нет — это надо знать всем детям. Только не все дети знают, что это значит и как работает. Кажется я это уже писал? Ах да, это же вторая часть статьи с разбором TLS.

В первой мы увидели, что такое «защищённое соединение», сколько и каких ключей для него нужно, кто кого шифрует и подписывает, и что такое «сертификат». Сейчас разберёмся, как всё это дело реализуется в протоколе TLS: как выглядит рукопожатие, как сделать ключ шифрования своими руками, в каком виде данные передаются по сети.
Читать дальше →

Information

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

Specialization

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