Pull to refresh
8
0
Evgeniy K @ugenk

CTO

Send message

На пальцах про WebRTC на примере своего мессенджера

Level of difficultyEasy
Reading time9 min
Views3.8K

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

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

Читать далее

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

Reading time4 min
Views35K
Любая система, работающая с платежами, должна быть надежной и отказоустойчивой.

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

Сейчас покажу, как это сделать.
Читать дальше →

ИИ-агент для управления компьютером: разработка умного помощника на Python

Level of difficultyMedium
Reading time6 min
Views11K

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

Читать далее

Low-code-биллинг для частного облака

Reading time14 min
Views3.5K

Меня зовут Александр и на момент подготовки этого материала я возглавлял RnD в Сбертехе. Я расскажу о частном облаке: какие существуют опенсорсные и не опенсорсные платформы биллинга для частных облаков, как выглядит референсная архитектура биллинга, что можно взять из опенсорса, чтобы построить свой биллинг и как все компоненты собрать в продукт.

Читать далее

Почему мои ZFS-диски так шумят?

Level of difficultyMedium
Reading time11 min
Views18K
У Джонни Кэша есть песня «One piece at a time» 1976 года. В ней рассказывается история об автомеханике, собирающем собственный Cadillac из деталей, которые он в течение 25 лет по одной тырил с производственного конвейера General Motors.

Некоторое время назад пользователь Practical ZFS задал обманчиво простой вопрос:

«У меня есть пул Proxmox из трёх RAIDz1 vdev (virtual device, виртуальное устройство) по 4 диска. Проблема в том, что во время работы VM все двенадцать дисков минимум раз в секунду издают громкий звук, причём в течение всего дня. Что может быть причиной, и как это устранить?»
Читать дальше →

Квантовые эксперименты на дому. Строим квантовый компьютер из лазера и полимеров

Level of difficultyMedium
Reading time21 min
Views25K

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

Читать далее

Моделирование отказоустойчивых кластеров на базе PostgreSQL и Pacemaker

Reading time12 min
Views13K

Введение


Некоторое время назад передо мной поставили задачу разработать отказоустойчивый кластер для PostgreSQL, работающий в нескольких дата-центрах, объединенных оптоволокном в рамках одного города, и способный выдержать отказ (например, обесточивание) одного дата-центра. В качестве софта, который отвечает за отказоустойчивость, выбрал Pacemaker, потому что это официальное решение от RedHat для создания отказоустойчивых кластеров. Оно хорошо тем, что RedHat обеспечивает его поддержку, и тем, что это решение универсальное (модульное). С его помощью можно будет обеспечить отказоустойчивость не только PostgreSQL, но и других сервисов, либо используя стандартные модули, либо создавая их под конкретные нужды.


К этому решению возник резонный вопрос: насколько отказоустойчивым будет отказоустойчивый кластер? Чтобы это исследовать, я разработал тестовый стенд, который имитирует различные отказы на узлах кластера, ожидает восстановления работоспособности, восстанавливает отказавший узел и продолжает тестирование в цикле. Изначально этот проект назывался hapgsql, но со временем мне наскучило название, в котором только одна гласная. Поэтому отказоустойчивые базы данных (и float IP, на них указывающие) я стал именовать krogan (персонаж из компьютерной игры, у которого все важные органы дублированы), а узлы, кластеры и сам проект — tuchanka (планета, где живут кроганы).


Сейчас руководство разрешило открыть проект для open source-сообщества под лицензией MIT. README в скором времени будет переведен на английский язык (потому что ожидается, что основными потребителями будут разработчики Pacemaker и PostgreSQL), а старый русский вариант README я решил оформить (частично) в виде этой статьи.


Krogan on Tuchanka

Читать дальше →

Строим плоскую L2-сеть между ВМ и железом в разных локациях

Level of difficultyMedium
Reading time4 min
Views8K

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

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

В ряде случаев вам и вовсе придется объединить эти подходы. Такую задачу легко решить, если достаточно L3-связности между виртуальными и физическими серверами. Например, между масштабируемым отказоустойчивым кластером веб‑приложений на виртуальных машинах (ВМ) и кластером баз данных на физических серверах.

Но иногда требуется объединить сервисы в L2-сеть. Например, на ВМ у вас установлен DCImanager — наша платформа для управления ИТ‑инфраструктурой. DCImanager должен управлять физическими серверами. Если всё ваше железо расположено физически в одном месте и у вас есть доступ к сетевому оборудованию, останется лишь настроить VLAN на портах коммутаторов и в гипервизоре (например, в системе управления виртуализацией VMmanager)

Что делать, если ваше оборудование расположено в разных локациях и доступа к коммутаторам и маршрутизатором дата‑центра нет? В таком случае необходимо настроить L2VPN между вашими площадками. Далее поделюсь одним из способов решения такой задачи.

Читать далее

Открываем Adobe Flash в Docker в 2024-м

Level of difficultyEasy
Reading time3 min
Views4.8K

Шарился я тут в по Интернету в поисках видео событий 15-летний давности и нашел что-то вроде искомого, но никак не смог посмотреть - требовался Adobe Flash. Погуглил я как мне открыть это видео, но рабочих вариантов не нашел. "Ладно" - подумал я: "Challenge accepted". А нам с читателем лишняя возможность потренироваться в создании Docker-контейнеров.

Дисклеймер: использование устаревших версий браузера и самого Flash-плагина несёт потенциальную угрозу безопасности. Используйте этот метод на свой страх и риск.

Итак, начнём с того, что поддержка Flash-плагина была выпилена в Chromium начиная с версии 89. То есть нам нужно что-то где есть более ранняя версия. Это что-то - это Ubuntu 18.04 - там 65я версия, если без апдейтов,а с апдейтами 112-я. В какой-то момент должна была быть и 88-ая, но не нашел где её добыть - если читатель подскажет, буду безмерно благодарен. И так, поехали - создаём Dockerfile

Читать далее

Большая шпаргалка по Docker: как распилить монолитный проект на части

Level of difficultyMedium
Reading time19 min
Views28K

Погружение в мир контейнеризации с докером — это путь к оптимизации развёртыванию приложений, а также ключ к упрощению жизни разработчиков и системных администраторов. Меня зовут Андрей Аверков, в IT c 2008 начинал пусть с аналитика-проектировщика IT систем, 11 лет в роли разработчика и последние годы на руководящих должностях. Сейчас я тимлид команды разработки из 9 человек в группе компании Кокос. Мы занимаемся созданием и поддержкой CPA платформ (gdeslon.ru, fxpartners.ru, ads.mobisharks.com), а также проектом по генерации лендингов — lpgenerator.ru. У нас большой опыт в разделении продуктов на части, поэтому, сегодня мы собрали самое основное и необходимое для работы с Docker. В нашей шпаргалке вы найдете все необходимое для успешного старта с докером: от базовых концепций и установки до продвинутых техник работы с контейнерами.

Читать далее

Операторы PostgreSQL для Kubernetes. Как мы выбирали идеальный вариант для организации системы DBaaS

Level of difficultyMedium
Reading time5 min
Views5.7K

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

Чтобы не изобретать велосипед, мы решили рассмотреть известные операторы, позволяющие разворачивать базы данных PostgreSQL в Kubernetes и управлять ими.

Читать далее

Новый год и Atari 2600

Level of difficultyMedium
Reading time16 min
Views5K

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

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

Будни техпода. Как перенести данные с одного виртуального хостинга на другой

Level of difficultyEasy
Reading time7 min
Views7.8K
image

В последние недели специалистам нашей техподдержки поступает много обращений с просьбой помочь перенести данные, размещённые на виртуальном выделенном сервере (VDS) другого хостинга. Особенно число таких запросов выросло после появления новости о закрытии с 25 декабря 2023 года проекта CloudLITE.

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

В статье мы подробно расскажем, как перенести VDS на операционной системе Windows или Linux.
Читать дальше →

4 сценария, когда нужно сделать ставку на Kotlin Multiplatform, а не Flutter

Level of difficultyEasy
Reading time4 min
Views9.4K

Привет, это Максим Мялкин — управляющий партнёр и руководитель мобильной разработки KTS.

Кроссплатформенные- инструменты помогают бизнесу не писать код два раза под iOS и Android, а переиспользовать его на обеих платформах. В статье — о том, чем Kotlin Multiplatform отличается от Flutter и в каких случаях он переигрывает и уничтожает Flutter. 

Читать далее

Тестовые серверы Telegram: инструкция по эксплуатации

Reading time11 min
Views28K

Про разработку ботов в Telegram написано много текстов, а про «тестовый дата-центр» практически ничего. Ранее Pavelgram освещал этот вопрос: он кратко рассказал, что такое тестовые серверы и как с ними работать. Я продолжу это начинание.

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

Поднимаем кластер PostgreSQL в Docker и Testcontainers

Level of difficultyMedium
Reading time8 min
Views31K

Ранее я рассказывал о том, как запустить PostgreSQL в Docker. Тогда речь шла об использовании «ванильных» образов Postgres и поднятии одного хоста. В большинстве случаев этого достаточно как для тестов, так и для экспериментов, но нужно понимать, что в промышленной эксплуатации чаще всего используются высокодоступные (отказоустойчивые, кластеризованные) конфигурации PostgreSQL.

Сегодня я покажу, как запустить уже целый кластер PostgreSQL в Docker, а также в тестах через Testcontainers, и как вручную инициировать смену мастер-хоста.

Читать далее

От Kubernetes в мечтах к Kubernetes в проде. Часть 2: о Kubernetes

Reading time12 min
Views5.9K

В серии статей по теме DevOps мы рассказываем о проверенных инструментах выстраивания инфраструктуры, которыми с недавнего времени пользуемся сами. В первой части мы остановились на основных предпосылках внедрения и выбранном подходе. В этой статье вместе с  Lead DevOps инженером департамента информационных систем ИТМО Михаилом Рыбкиным рассмотрим подробнее фундамент нашей инфраструктуры — Kubernetes. 

Разумеется, статей об этом оркестраторе огромное множество, и можно на протяжении всей карьеры узнавать о нем что-то новое. Сразу уточним — в этой части мы не планируем копать глубоко. Попытаемся дать основы, описать Kubernetes так, чтобы сложилось базовое представление об этом инструменте. 

Читать далее

Google: «У нас нет преимущества перед открытым кодом, и у OpenAI тоже нет»

Level of difficultyMedium
Reading time12 min
Views27K

Утекший внутренний документ Google утверждает, что открытый исходный код AI обойдет Google и OpenAI.

В Google много обсуждали OpenAI. Кто первым преодолеет следующий рубеж? Каким будет следующий шаг? Но неприятная правда заключается в том, что мы не готовы выиграть эту гонку вооружений, и OpenAI тоже. Пока мы ссорились, третья сторона тихо забирала наш обед. Я, конечно, говорю об открытом исходном коде. Проще говоря, они опережают нас. То, что мы считаем "основными открытыми проблемами", уже решено и находится в руках людей. Достаточно назвать лишь несколько примеров...

Читать далее

Переводим статический веб-сайт на языки мира при помощи Weblate

Level of difficultyHard
Reading time14 min
Views11K

В данной статье мы расскажем как перевести статический веб-сайт с Markdown (Zola, Hugo, Jekyll, Pelican, Gatsby, и д.р.) на все языки мира и поддерживать переводы в актуальном состоянии при изменении исходных текстов.

Читать далее

Information

Rating
6,178-th
Location
Минск, Минская обл., Беларусь
Date of birth
Registered
Activity