Search
Write a publication
Pull to refresh
2
0.1

User

Send message

Как я пришёл в open source в 2025-м (с утилитой для бекапа PostgreSQL), чуть не потеряв проект на ~$1500\мес в 2023-м

Level of difficultyMedium
Reading time5 min
Views18K

Однажды я столкнулся с проблемой, когда почти потерял коммерчески успешный пет-проект из-за устаревших резервных копий БД (ещё до того, как он стал коммерчески неуспешным). При этом, даже после частичного восстановления, все-таки потерял ~30% прибыли от проекта, много нервов и времени.

Это подтолкнуло меня на разработку своего открытого инструмента для бекапа PostgreSQL. С разными хранилищами, уведомлениями при сбоях и health check'ом. Собственно, о том, как я потерял деньги и затем разработал проект — хочу рассказать в статье ниже.

Читать далее

Как кофе с собой делает нас нищими?

Level of difficultyEasy
Reading time4 min
Views91K

Дисклеймер: речь пойдёт не только о кофе — да и вовсе не о кофе. Суть статьи — попытаться ответить на вопрос: почему при нормальном доходе мы ничего не откладываем, не покупаем квартиры и прочие дорогостоящие вещи?

В любой истории нужен герой. Нашим героем будет Петя. Ему 27 лет, он живёт в Екатеринбурге, работает программистом на позиции Senior Backend Developer в крупной московской компании и получает пресловутые 300к/наносек — 300 000 рублей в месяц.

Как проходит обычный рабочий день Пети? Он едет на работу на такси (сегодня по акции — всего 500 рублей), по пути заходит в свою любимую кофейню, берёт раф без кофеина на безлактозном молоке. 400 рублей — копейки, он за 15 минут работы столько зарабатывает.

Доходит до своего рабочего места и начинает работать. Время обеда подходит — он открывает приложение доставки, заказывает себе еду из сервиса с обещанной доставкой от 15 минут. Тратит, ну, максимум 1000. Он же заслужил — ничего такого здесь нет. Попутно смотрит, куда бы сходить на выходных или вечером.

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

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

Читать далее

Основы работы с базой данных RIPE

Reading time13 min
Views48K


Данная статья задумывалась как отправная точка, которая поможет новичкам быстро вникнуть в суть работы с БД RIPE, чтобы в голове сложилась целостная картина и понимание, для чего в ней используются те или иные объекты. Отмечу, что данная статья дает только общее представление о работе с данной системой, не описывая детальные шаги, но тем не менее я надеюсь, что после прочтения вам будет легче разобраться в вопросе. 
Читать дальше →

Защита от DoS/DDoS атак с помощью фильтрации по номеру автономной системы (ASN)

Reading time9 min
Views32K

Введение


В свете новогодних праздников с их неотъемлемым атрибутом — повышенной активностью DoS/DDoS атак хотелось бы поднять один довольно редко используемый (но при этом довольно эффективный) способ отражения атак — блокировка на основании принадлежности блоков IP адресов определенному провайдеру/Дата Центру.

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

Что я хотел бы знать заранее, когда выкупал себе целую ASN

Reading time16 min
Views18K

Как вы, возможно, знаете, я сейчас пишу серию статей о BGP и о том, как устроен Интернет. Рассказываю об этом с собственной точки зрения — как оператор небольшой автономной системы, AS200 351. Притом, что теоретического материала на эту тему много, предположу, что мои читатели достаточно поднаторели в теории и умеют самостоятельно обустроить элементарную автономную систему. Не вынуждая вас заниматься самостоятельными исследованиями, основанными на неактуальной и потенциально ошибочной информации, взятой из Интернета, а тем более не подвергая вас риску столкнуться с мошенничеством, полагаю, было бы важно рассказать, каково это — приобрести собственную ASN.

Читать далее

Анализируем сетевой трафик средних и крупных сетей с помощью Netflow/IPFIX/sFlow и боремся с DoS/DDoS с помощью BGP

Reading time11 min
Views4.4K

Не так давно мы выпустили новую версию open source xFlow-коллектора и анализатора xenoeye. Это неплохой повод попиариться. тем более что xFlow-коллекторами/анализаторами часто пользуются для анализа, мониторинга и борьбы с DoS/DDoS атаками, это сейчас очень актуально.

Если совсем коротко - анализатор собирает xFlow (Netflow и некоторые родственные протоколы типа Jflow, IPFIX, sFlow), распределяет их по объектам мониторинга, экспортирует информацию в СУБД (в текущей версии PostgreSQL), и может быстро реагировать на всплески трафика выше порогов для детекции DoS/DDoS атак с помощью скользящих средних.

Информацию из СУБД можно визуализировать разными способами - генерировать статические картинки и отчеты или показывать красивое в Grafana.
Реагировать на всплески можно тоже по-разному - отправлять сообщения в мессенджер, писать данные об аномалиях в БД, анонсировать BGP Flowspec для подавления атак.

Читать далее

Задачи на собеседованиях. Денежные переводы в SQL. Обновление счетов и уровни изоляций

Level of difficultyMedium
Reading time4 min
Views25K

Задачи на собеседованиях. Денежные переводы в SQL. Обновление счетов и уровни изоляций

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

Читать далее

Эволюция хранилища ВКонтакте: от первой реализации до наших дней

Level of difficultyMedium
Reading time9 min
Views3.4K

Привет, Хабр! Последние несколько лет я занимаюсь разработкой баз данных ВКонтакте. Аудитория такой крупной соцсети ежедневно генерирует огромные массивы информации. 

В этой статье я расскажу про хранилище ВКонтакте: как оно менялось, что мы делаем для оптимизации занятого места и как гарантируем сохранность данных.

Читать далее

Как мы спроектировали и запустили собственную облачную платформу на 20К виртуальных машин — опыт Wildberries

Reading time12 min
Views9.5K

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

Привет, Хабр! Меня зовут Алексей Чуркин, я работаю в компании Wildberries, где строю приватное облако. В этой статье по мотивам моего доклада для Highload++ расскажу о том, как мы внутри компании построили облачную платформу, с какими сложностями столкнулись и как собираемся её развивать.

Читать далее

16 главных DevOps-метрик (DORA и не только!) — на чем сосредоточиться и как использовать

Level of difficultyEasy
Reading time13 min
Views4.9K

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

В этой статье мы поговорим о важности мониторинга DevOps‑метрик и о том, что именно нужно отслеживать. От широко известных метрик, которые приобрели статус стандартных благодаря DORA (DevOps Research and Assessment), до других важных индикаторов — мы предлагаем вашему вниманию исчерпывающее руководство, которое поможет вам измерить и оптимизировать ваши DevOps‑практики.

Читать далее

Пиши простой код

Level of difficultyEasy
Reading time4 min
Views53K

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

Читать далее

Делаем медиа сервер из Orange Pi Zero 3

Level of difficultyMedium
Reading time4 min
Views9.4K

В этой статье мы установим всё необходимое для работы Orange Pi Zero 3 в роли медиа сервера DLNA с Transmission. При этом система будет запускаться с жесткого диска, а для установки нам не потребуется подключать к Orange Pi клавиатуру либо дисплей.

Купив Orange Pi Zero 3, я первым делом полез в интернеты искать гайд для установки нужной мне системы, но везде натыкался на гайды где все операции проводят подключая Orange Pi Zero 3 (далее апельсин) к дисплею через Micro-HDMI (которого у меня не было) и набирая все команды через клавиатуру. В общем мне показалось это глупым, а главное мне было лень покупать и ждать пока придет Micro-HDMI, поэтому я нашел способ установить всё через ssh и здесь детально его распишу.

Читать далее

Проксирование из коробки: сравнительный анализ HAProxy, Envoy, Nginx, Caddy и Traefik

Level of difficultyMedium
Reading time23 min
Views20K

Всем привет, меня зовут Стас, я техлид в Mish Product Lab.

Тема возникла не просто так: внутри команды у нас было немало споров и дискуссий о том, какой инструмент для проксирования и терминации SSL лучше использовать в различных ситуациях. Изначально все наши гипотезы были основаны больше на личных предпочтениях, чем на реальных данных. Мы долго спорили, надеясь, что истина будет где-то рядом с нашими любимыми решениями. Но в итоге пришли к выводу, что единственный способ получить действительно объективный ответ — это протестировать и сравнить различные варианты на практике.

Именно так родилась идея провести сравнительный анализ производительности HAProxy, Envoy, Nginx, Caddy и Traefik с поддержкой SSL/TLS. Мы хотели понять, какой из инструментов «из коробки» предоставляет наилучшую производительность и минимальные накладные расходы, особенно при обработке SSL-трафика, который, как известно, требует дополнительных ресурсов из-за шифрования и дешифрования.

Читать далее

Архитектура в Laravel. Как сделать код понятным и масштабируемым

Level of difficultyEasy
Reading time5 min
Views7.9K

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

Читать далее

Домашнее облако: как я построил цифровой «бункер» для важных данных

Reading time30 min
Views34K

Фото важных семейных событий и видео из путешествий, копии важных документов, музыка, фильмы, которых не найти на стримингах — многие задумывались, как сохранить все самое важное так, чтобы ситуация с не вовремя сломавшейся флешкой не обернулась потерей ценных данных навсегда. Кому-то для спокойствия достаточно Google Drive или Яндекс.Диска, но я решил пойти чуть дальше и построить собственное домашнее облако с приложениями Immich и Nextcloud.

Кстати, привет, Хабр! Я Денис Петухов, Python-разработчик в Cloud.ru и сегодня я расскажу, как построил облако в шкафу. По ходу дела дам практические рекомендации по архитектуре, выбору оборудования, приложений, настройке сети и даже приведу расчеты того, что выгоднее, и сколько электричества «съедает» домашняя хранилка в месяц.

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

PHP под капотом: как работает генерация случайных чисел

Level of difficultyEasy
Reading time4 min
Views3.3K

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

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

Сегодня мы заглянем под капот PHP и разберёмся, как устроена эта иллюзия случайности!

Читать далее

Прячем шифрованные диски

Reading time4 min
Views9.4K

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

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

Что, если попробовать совместить одно с другим?

Читать далее

Как я нашел уязвимость в онлайн казино и получил $20 000 в качестве награды

Level of difficultyMedium
Reading time3 min
Views10K

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

Читать далее

Как сделать провальный стартап, если ты разработчик?

Level of difficultyEasy
Reading time3 min
Views12K

В этой статье очень наивный разработчик в лице меня рассказывает как пытался разобраться как строить стартапы.

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

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

Помимо этого еще куча причин, но сейчас не об этом - когда мне на счет начало стабильно приходить более 500к рублей я начал задумываться над тем, чтобы сделать свой пет-проект и начать на нем зарабатывать.

Но я не учел того, что в IT продуктах сама разработка - далеко не самая важная для большинства проектов. Есть конечно высоконаучные области, например то, что делает OpenAI, но по большей части, разработка не так важна...

Читать далее

Пример HTTP-сервера на PHP с использованием файберов. Улучшенная версия

Level of difficultyHard
Reading time9 min
Views3.9K

В статье Пример HTTP-сервера на PHP с использованием файберов / Хабр краеугольным камнем организации обработки HTTP-соединений является функция socket_select(), которая имеет значительное ограничение - максимальное значение дескриптора, которое можно добавить в любой из трёх аргументов данной функции составляет 1024. Данный лимит определяется константой FD_SETSIZE, для увеличения которой придётся сконфигурировать системные лимиты и как минимум пересобрать интерпретатор PHP, что нецелесообразно и может создать эксплуатационные проблемы. К тому же, производительность функции select(), обёрткой над которой является функция socket_select(), значительно проседает при ощутимом увеличении значения константы FD_SETSIZE. В данной статье я постараюсь продемонстрировать альтернативу, позволяющую избавить пример из предыдущей статьи от данного ограничения.

Читать далее
1
23 ...

Information

Rating
5,009-th
Registered
Activity

Specialization

Information security architect
Lead
From 15,000 $
Negotiation
C++
Qt
OOP
Linux
PHP
SQL
Nginx
High-loaded systems
Designing application architecture