Я кратко познакомлю с инструментом шифрования age (кратко - потому что он простой в использовании - там просто нечего долго объяснять, при этом шифрует по современным стандартам шифрования). Мы научимся в одну простую команду шифровать как личные бэкапы, так и корпоративные (для нескольких асимметричных ключей, не храня ключ на сервере), а затем поспорим на тему того, почему openssl такой плохой инструмент и не пригоден для практического применения обычными пользователями/админами, чье представление о криптоалгоритмах примерно выражено на КДПВ.
Разработчик веб-приложений
Что ищет он в краю далёком? Как найти смысл жизни с PostgreSQL
Эта статья родилась из пары лекций, которые я прочитал студентам в рамках курса, посвященного вопросам машинного обучения. Почему именно PostgreSQL? Почему векторы? За последние два года тема языковых моделей стала невероятно популярной, и вместе с этим появилось множество инструментов, доступных даже начинающему инженеру, стремящемуся познакомиться с миром текстового анализа.
Доступность этих технологий открывает безграничные возможности для их применения в самых разных областях: от систем управления знаниями до «копилотов», помогающих более тщательно анализировать анамнез пациентов, или информационных киосков, позволяющих собрать идеальную корзину товаров для пикника.
Вряд ли данная работа может похвастаться полнотой или глубиной, однако, я надеюсь, что она предоставит те самые “хорошие” точки входа, которые позволят, погружаясь в детали, открыть для себя множество новых интересных и полезных тем для исследований и инженерных проектов.
Ручное восстановление БД PostgreSQL после аппаратного сбоя
В очередной рабочий день поступила задача обновить Gitlab. Задача в общем-то не сложная, ни смотря на то, что там он установлен в докере из многим знакомого образа от sameersbn, что впоследствии было переделано на omnibus (что бы это не значило), т.к. по моему опыту omnibus версия (установка на чистый линукс) гораздо проще и предсказуемей в эксплуатации. Впрочем статья совсем не об этом.
Но как можно понять из наличия этой статьи, что-то пошло не так...
Как сократить время ответа в 2 раза, добавив одну строку кода
Okko – один из крупнейших онлайн-кинотеатров в России c нагрузкой в несколько тысяч запросов в секунду, в котором персональные рекомендации занимают важное место. Для улучшения пользовательского опыта нужно не только предоставить качественные рекомендации, но и обеспечить быстрый доступ к ним.
В этой статье мы поделимся:
1. Описанием, как мы использовали инструменты Jaeger и Grafana для выявления узких мест в производительности, что привело к выявлению критических проблем со сборщиком мусора;
2. Анализом влияния различных настроек сборщика мусора на время ответа, что позволило сократить его вдвое для 99% запросов;
3. Когда и почему стоит рассматривать изменение стандартных настроек сборщика мусора (на примере нашего случая).
Как мы переехали с StatsD на Prometheus всего за месяц
Недавно мы осуществили миграцию системы сбора наших инфраструктурных метрик с StatsD на Prometheus и остались весьма довольны результатами. Это была нелёгкая работа, но мы многому научились в процессе. Эта статья призвана рассказать, почему мы выбрали Prometheus, а также описать некоторые технические сложности, с которыми мы столкнулись.
Метрики — настолько важный и повсеместный компонент в современных распределенных системах, что легко забыть, что популярные протоколы метрик с открытым исходным кодом начали появляться только в последнее десятилетие.
Простые опыты с ребенком дома
Пример очень неудачного опыта, пояснение в разделе “о технике безопасности”
К моему предыдущему посту было множество комментариев по части экспериментов с детьми. Тогда я пообещал написать отдельный пост о простых увлекательных опытах. Сейчас я это обещание выполняю. Данная статья будет вводной, в ней я расскажу только о самых популярных и известных экспериментах которые легко выполнить дома с ребенком.
PostgreSQL 17: уже можно просто делать бекапы и перестать страдать?
Так исторически сложилось, что задача организации простого и понятного резервного копирования в мире PostgreSQL до сих пор не решена. Есть набор комьюнити утилит, у каждой из которых есть некие плюсы, но всегда в нагрузку будет прорва минусов (тут нет инкрементных копий, там нет внятного расписания, это может только весь сервер вместо конкретной базы увозить и так далее). Да, есть тяжёловесный энтерпрайзный софт за много денег, зачастую требующий странного и работающий по какой-то своей логике, но это тоже не панацея. А вот чтобы просто и понятно, без головных болей организовать прозрачный процесс банального бекапа с инкрементами, работающим расписанием и восстановления только того что надо - вот такого нет.
Но буквально на днях вышел PostgreSQL 17 и может там что-то изменилось? И да, и нет. Та самая мана небесная в виде pg_awesome_backup_tool так и не появилась, однако в релиз попал механизм walsummarizer, который обещает нативно отслеживать изменения в файлах баз данных, что позволит делать инкрементальные бекапы нативно и без лишних приседаний.
А чтобы не рассматривать новичка в вакууме, будем сравнивать его с ptrack - нашей (Postgres Professional) разработкой, которую наши любимые конкуренты уже расхватали в свои продукты и продают их как уникальнейшие решения.
Получаем удовольствие от дешевых китайских микроконтроллеров (CH32V003)
Если вы оказались здесь, то скорее всего помните как в еще в 2022 году одним из самых важных событий в мире (DIY) была новость про микроконтроллер за 10 центов от уже известной всему миру благодаря своему USB-UART свистку CH340 компании Nanjing Qinheng Microelectronics Co., Ltd, далее WCH.
Отладку от самой WCH, плату от WeAct и даже сами камни я заказал на Али, потыкал в пару примеров и забыл. Для DIY-проектов мне гораздо больше понравились платы от WeAct с ch32x035 и ch32v203, по стоимости примерно такие же, а функционала сильно больше, но в этом году на просторах китайского маркетплейса мне стала попадаться плата с героем статьи, да еще и с USB-C на ней.
Она стоит заметно дешевле своих собратьев и на момент заказа мне обошлась за 90 рублей в сумме с доставкой, а значит, новому королю DIY - быть.
Так и родилась идея сделать свой sdk.
Обзор книги Томаса Майерса «Анатомические поезда». Анатомия с ног на голову или тело, как единая система
Томас Майерс
Периодически на Хабре мне попадаются обзоры уникальных по содержанию книг о здоровье и медицине, и мне показалось несправедливым, что бестселлер Томаса Майерса обошли стороной.
Обычно изучение анатомии рассматривает мышцы и части тела вне тесной связи, условно, их работа исследуется лишь в разрезе крепления между костями. «Анатомические поезда» описывают всю систему в целом.
Почему же поезда, и почему анатомические? Томас Майерс в своей книге описывает силовые нагрузки, которые распределяются по нашему телу. Вы наклоняетесь влево, и тело компенсирует нагрузку, не давая упасть. Бывают и такие моменты, когда тело не успевает за движением.
Для сохранения баланса нагрузка мгновенно распределяется по силовым линиям, и удерживает нас от падения. Условно, если вы пошевелите большим пальцем правой ноги, у вас подключатся мышцы левого плеча, чтобы осуществить это движение. Эти связи автор книги называет анатомическими поездами, которые позволяют филигранно выстраивать работу тела.
На мой взгляд, эта книга предназначена, в первую очередь для людей, специализация которых связана с помощью другим. Это фитнес-тренеры, реабилитологи, мануальные специалисты, остеопрактики и остеопаты.
«Анатомические поезда» Томаса Майерса являются исчерпывающим описанием системы работы с опорно-двигательным аппаратом.
Как распутать уроборос роутинга в Linux
Описание проблемы
Ситуация: у нас имеется один интерфейс eth0, «смотрящий» в интернет, с IP-адресом 192.168.11.11/24 и шлюзом 192.168.11.1. Нам нужно организовать интерфейс vpn0, который будет через VPN соединяться с неким сервером, и весь исходящий с этой машины трафик должен идти через этот интерфейс vpn0.
Примечание: я оставляю за скобками детали работы с IPv6, поскольку там хватает своих особенностей. Рассматривается только ситуация с IPv4.
Итак, мы берём в руки программу для подключения в VPN-у — она соединяется с неким VPN-сервером по адресу 10.10.10.10 и поднимает нам интерфейс vpn0 например с таким адресом: 192.168.120.10/24, шлюз 192.168.120.1. Казалось бы, всё хорошо, пинги через vpn0 ходят, коннект есть, он стабильный, осталось только прописать нечто вроде
ip route add default dev vpn0 metric 1000
чтобы перенаправить все соединения через новый интерфейс и…
И всё благополучно падает. Пропадает интернет, отваливается VPN, отключается ssh (если вы по нему подключены к хосту). Если приложение VPN-а не выключит интерфейс при потере соединения, то извне вы до этого хоста до ребута больше не подсоединитесь.
Кластеры и мир: хроника высокодоступного Pub/Sub в Redis
В статье рассматриваются основные принципы и особенности использования Redis в режиме Pub/Sub для масштабируемых и высоконагруженных приложений. Описаны два подхода к обеспечению высокой доступности — Redis Sentinel и Redis Cluster, их преимущества, ограничения и примеры настройки. Приведены примеры использования Pub/Sub в реальных системах, а также практические конфигурации и код для настройки отказоустойчивого кластера Redis. Статья предназначена для разработчиков, которые ищут решения для создания надежных систем обмена сообщениями с высокой производительностью и отказоустойчивостью.
Пацанский английский. Ленивый способ наконец выучить английский язык: без курсов, без зубрежки, бесплатно
Привет, Хабр! Я не являюсь преподавателем английского языка, но, как и многие присутствующие, долгие годы хотел постигнуть его дебри. В школе я от всего сердца завидовал ребятам, которым он даётся налегке, без видимых трудностей. Я же зубрил, пытался понять, получал двойки… и люто ненавидел английский язык как школьный предмет. Мечтал владеть, но совсем не хотел учить. После школы и университета приступал к его изучению несколько раз, однако каждый мой всплеск быстро угасал.
Наконец случилось чудо. В одну из очередных попыток я нащупал способ, который позволил продолжать развиваться, делать успехи, осознавать их и разжигать мой огонь всё сильнее и сильнее. Сегодня мне сложно представить день, проведенный без английского языка. И мне не хочется говорить без “изучения”, поскольку не сказал бы, что я именно учу. Скорее — постепенно “прошиваюсь” английским, как это обычно происходит с новорожденным детьми, которые постепенно начинают говорить, слушая и наблюдая за своими родителями. В настоящее время мой словарный запас не такой большой: 9 — 12 тысяч слов (зависит от теста). Я свободно смотрю видео на Ютубе разнообразной тематики (видеоуроки, спорт, фитнес, музыка, путешествия, кулинария, обзоры и т.д.), читаю документацию, компьютерную и популярную литературу, публицистику.
Транзакции в БД на Go с использованием многослойной архитектуры
Когда я присоединяюсь к новой компании, меня часто посещает синдром самозванца. После всех этих собеседований кажется, что парни знают, что делают и я смиренно настравиаюсь учиться у лучших.
Однажды, я столкнулся с инцидентом на проде и обратился за помощью к самому опытному инженеру. Он пришел на помощь и с легкостью изменил значение в БД с помощью... ручного обновления. 🤯 Проблема заключалась в том, что набор SQL-обновлений не был выполнен внутри транзакции.
Работа в новой компании — это всегда увлекательно. Я осознал, что даже если какой-то аспект кажется простым, например, SQL-транзакции, его легко упустить из виду.
SQL кажется чем-то, что мы все хорошо знаем, и мало чем может удивить. (Ему уже 50 лет!) Возможно, пришло время пересмотреть подходы, так как мы уже прошли фазу хайпа по поводу NoSQL, и снова возвращаемся к “используйте просто Postgres”, а иногда и к “SQLite тут за глаза”.
Я хочу сосредоточиться на том, как правильно применять транзакции в коде, а не на их технической сложности. Когда ваш проект становится больше, вы начинаете разделять логику и код базы данных с помощью слоев. Однако это не всегда так просто, как кажется. Вы можете запутаться и столкнуться с неочевидными ошибками.
Основной принцип многослойной архитектуры заключается в разделении критически важных частей кода (логики) от деталей реализации (например, SQL-запросов). Одним из способов достижения такого разделения является паттерн «Репозиторий». Однако, наиболее сложным аспектом такой архитектуры является обработка транзакций.
Майкл Стоунбрейкер: «Всё новое — это хорошо забытое старое. Продолжение»
От редакции: Майкл Стоунбрейкер - один из самых известных в IT мире ученых и отец-основатель Postgres. В соавторстве с Энрю Павло, недавно опубликовал большой обзор всех актуальных технологий систем управления базами данных. В этом материале — подробно обо всем, что произошло в мире баз данных за последнее время, а также прогнозы. Мы посчитали что нельзя лишать нашу аудиторию возможности ознакомиться с этим обзором, поэтому подготовили данный перевод.
Странное поведение планировщика запросов PostgreSQL
В одной из предыдущих статей я описывал проблемы, которые возникают при работе с временными таблицами. Тогда я вкратце описывал, почему нам приходится их так часто использовать. В частности, одной из причин была неправильная работа планировщика запросов в PostgreSQL. Многие из проблем планировщика запросов (и не только PostgreSQL) были также описаны в статье Почему не SQL. В этой статье я покажу достаточно простой и часто используемый случай, когда планировщик ошибается, что может приводить к значительному росту потребления ресурсов.
Проблема воспроизводится на последней стабильной на данный момент версии PostgreSQL - 16.2. При этом используются стандартные настройки PostgreSQL. Я пробовал менять разные настройки, но мне не удалось добиться правильного плана в общем случае, поскольку в данном случае проблема скорее логическая, а не в определении стоимости вычислений. Однако, каждый может легко воспроизвести эту ситуацию локально и попробовать поиграться с настройками.
Рассмотрим простую доменную логику, в которой есть документы и их строки. Для каждой строки вводится сумма. Строки лежат в отдельной таблице и ссылаются на документ :
PostgreSQL 'VALUES -> ANY' transformation: должна ли СУБД делать работу за пользователя?
Недавно, на хабре вышла статья про один нюанс в оптимизаторе PostgreSQL [1]. Будучи предельно технической и скучной по-определению, она триггернула интересную дискуссию в комментах и дала мне, как разработчику систем баз данных, возможность взглянуть на систему с точки зрения разработчика приложений. Это оказалось крайне продуктивным и даже привело к патчу и треду в сообществе. Возможно, нам нужно больше таких небольших и узко-специализированных постов? Данная статья - попытка развить это направление.
PostgreSQL Antipatterns: работаем с отрезками в «кровавом энтерпрайзе»
Как правило, они отчаянно маскируются, и даже у нас в СБИС их найти можно в абсолютно разных сферах управления предприятием: контроле рабочего времени, оценке загрузки линий АТС или даже в бухгалтерском учете.
«Отличие enterprise [решения] от всего остального — он всегда идёт от запросов бизнеса и решает какую-то бизнес-задачу.» [src]Вот и давайте посмотрим, какие именно прикладные задачи и как можно решить с помощью PostgreSQL и сократить время анализа данных с нескольких секунд на бизнес-логике до десятков миллисекунд, умея эффективно применять следующие алгоритмы непосредственно внутри SQL-запроса:
- поиск отрезков, пересекающих точку/интервал
- слияние отрезков по максимальному перекрытию
- подсчет количества отрезков в каждой точке
Теорема об одурачивании людей или как не стоит верить уловкам маркетинга в безопасность приложений на примере Telegram
С тех пор как безопасность приложений стала лишь видимостью, она начала очень хорошо продаваться за счёт отсутствия своего содержания и, как следствие, реальных затрат на своё обеспечение.
В ДЭГ на президентских выборах проголосовало на 211 тысяч больше, чем было избирателей. Что это значит?
Введение в курс дела
На мартовских выборах президента я был официальным наблюдателем за федеральным ДЭГ с доступом к ноде наблюдения. Совместно с коллегами мы обнаружили, что количество голосов в официальных протоколах на 211 тысяч больше, чем было загружено избирателей в систему электронного голосования. То есть в ДЭГ в некоторых регионах явка превышает 100 процентов. Как так получилось?
Qucs-S: руководство по видам моделирования, часть 1
Qucs-S является программой с открытым исходным кодом для моделирования электронных схем. Qucs-S кроссплатформенный (поддерживаются Linux и Windows) и написан на С++ с использованием набора библиотек Qt. О данной программе рассказывают мои предыдущие статьи. Для работы Qucs-S рекомендуется использовать также открытый движок моделирования Ngspice. Актуальным релизом Qucs-S на текущий момент является версия 2.1.0. В данной статье подробно рассматриваются виды моделирования, имеющиеся в Qucs-S. Начальное руководство по работе с программой можно найти здесь: https://habr.com/ru/articles/678526/
Information
- Rating
- 4,015-th
- Location
- Москва и Московская обл., Россия
- Registered
- Activity