Как стать автором
Обновить
3
0.4
Павел @pvzh

Разработчик веб-приложений

Отправить сообщение

Странное поведение планировщика запросов PostgreSQL

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров7.7K

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

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

Рассмотрим простую доменную логику, в которой есть документы и их строки. Для каждой строки вводится сумма. Строки лежат в отдельной таблице и ссылаются на документ :

Читать далее
Всего голосов 24: ↑24 и ↓0+29
Комментарии24

PostgreSQL 'VALUES -> ANY' transformation: должна ли СУБД делать работу за пользователя?

Уровень сложностиСложный
Время на прочтение6 мин
Количество просмотров1.9K

Недавно, на хабре вышла статья про один нюанс в оптимизаторе PostgreSQL [1]. Будучи предельно технической и скучной по-определению, она триггернула интересную дискуссию в комментах и дала мне, как разработчику систем баз данных, возможность взглянуть на систему с точки зрения разработчика приложений. Это оказалось крайне продуктивным и даже привело к патчу и треду в сообществе. Возможно, нам нужно больше таких небольших и узко-специализированных постов? Данная статья - попытка развить это направление.

[1] Странное поведение планировщика запросов PostgreSQL

Читать далее
Всего голосов 22: ↑22 и ↓0+30
Комментарии6

PostgreSQL Antipatterns: работаем с отрезками в «кровавом энтерпрайзе»

Время на прочтение6 мин
Количество просмотров10K
В различных бизнес-приложениях регулярно возникает необходимость решить какую-либо задачу с отрезками/интервалами. Самое сложное в них — понять, что это именно одна из таких задач.


Как правило, они отчаянно маскируются, и даже у нас в СБИС их найти можно в абсолютно разных сферах управления предприятием: контроле рабочего времени, оценке загрузки линий АТС или даже в бухгалтерском учете.
«Отличие enterprise [решения] от всего остального — он всегда идёт от запросов бизнеса и решает какую-то бизнес-задачу.» [src]
Вот и давайте посмотрим, какие именно прикладные задачи и как можно решить с помощью PostgreSQL и сократить время анализа данных с нескольких секунд на бизнес-логике до десятков миллисекунд, умея эффективно применять следующие алгоритмы непосредственно внутри SQL-запроса:

  • поиск отрезков, пересекающих точку/интервал
  • слияние отрезков по максимальному перекрытию
  • подсчет количества отрезков в каждой точке
Читать дальше →
Всего голосов 23: ↑22 и ↓1+27
Комментарии2

Теорема об одурачивании людей или как не стоит верить уловкам маркетинга в безопасность приложений на примере Telegram

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров40K

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

Читать далее
Всего голосов 69: ↑53 и ↓16+50
Комментарии153

В ДЭГ на президентских выборах проголосовало на 211 тысяч больше, чем было избирателей. Что это значит?

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров32K

Введение в курс дела

На мартовских выборах президента я был официальным наблюдателем за федеральным ДЭГ с доступом к ноде наблюдения. Совместно с коллегами мы обнаружили, что количество голосов в официальных протоколах на 211 тысяч больше, чем было загружено избирателей в систему электронного голосования. То есть в ДЭГ в некоторых регионах явка превышает 100 процентов. Как так получилось?

Узнать куда пропали 211к избирателей
Всего голосов 228: ↑218 и ↓10+261
Комментарии300

Qucs-S: руководство по видам моделирования, часть 1

Время на прочтение10 мин
Количество просмотров9.2K

Qucs-S является программой с открытым исходным кодом для моделирования электронных схем. Qucs-S кроссплатформенный (поддерживаются Linux и Windows) и написан на С++ с использованием набора библиотек Qt. О данной программе рассказывают мои предыдущие статьи. Для работы Qucs-S рекомендуется использовать также открытый движок моделирования Ngspice. Актуальным релизом Qucs-S на текущий момент является версия 2.1.0. В данной статье подробно рассматриваются виды моделирования, имеющиеся в Qucs-S. Начальное руководство по работе с программой можно найти здесь: https://habr.com/ru/articles/678526/

Читать далее
Всего голосов 30: ↑30 и ↓0+30
Комментарии30

Превращение роутера Интеркросс ICxETH5670NE в Asus RT-N12XL

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров5.6K

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

Достался мне бесплатно вот такой аппарат под названием Интеркросс ICxETH5670NE 2013-го года выпуска в родной коробке с проводами и инструкциями и даже в защитной плёнке.

Захотелось прошить на него какую-нибудь альтернативную прошивку.

Читать далее
Всего голосов 27: ↑27 и ↓0+39
Комментарии14

Реверс-инжиниринг ресурсов игры LHX. Часть 5, заключительная

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров2K

В предыдущем посте я поделился своей радостью по поводу того, что сумел‑таки выковырять с LHX модельки игры и привести их в современный вид. И ещё самими модельками. И даже способом, котором я это сделать.

Но после этого я, по инерции, решил ковыряться дальше. Факультативно, так сказать.

А про что эта картинка?
Всего голосов 21: ↑21 и ↓0+28
Комментарии3

Необычные приёмы отладки, которые браузер от вас скрывает

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров13K

Список неочевидных, но при этом полезных хаков, которые позволят использовать отладчик вашего браузера1 более полноценно. Для понимания материала статьи потребуется как минимум средний уровень владения инструментами разработчика.
Читать дальше →
Всего голосов 70: ↑69 и ↓1+94
Комментарии12

Systemd для начинающих: разбор юнитов и их функций

Время на прочтение8 мин
Количество просмотров11K

На связи Егор из блока поддержки платформы F5, сегодня предлагаем вспомнить основы systemd. Поскольку утилит и возможностей в нем много, а новые функции добавляются регулярно, следить за всем этим может быть непросто, так что начнем с основ.

Systemd — это init процесс, который запускается при загрузке ядра операционной системы linux и его задачей является форкать другие процессы. Информацию о том, какие процессы необходимо исполнить он берет из, так называемых “юнитов” (systemd unit - https://www.freedesktop.org/software/systemd/man/latest/systemd.unit.html). Юниты бывают различных типов, каждый из которых выполняет определенную задачу.

Читать далее
Всего голосов 18: ↑15 и ↓3+14
Комментарии4

Книжная полка DevOps-инженера

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров17K

Всем привет! Решил накидать книжных полезняшек для тех, кто любит DevOps или движется в этом направлении. Книги поделил по темам: сначала базовый уровень, потом архитектура, методологии, ну и всё остальное. В общем, от и до.

Я Сергей Задорожный, руководитель отдела платформенных решений банка «Центр-инвест» и один из авторов курса «DevOps для эксплуатации и разработки» от Яндекс Практикума. Раньше занимался написанием бэкендов на Java и Kotlin, потом занялся архитектурой, выстраиванием процессов, а сейчас заношу DevOps-практики в финтех-энтерпрайз.

Читать далее
Всего голосов 22: ↑22 и ↓0+26
Комментарии4

Какой роутер для OpenWrt купить в 2025 году?

Уровень сложностиПростой
Время на прочтение21 мин
Количество просмотров89K

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

Роутер, как и любой другой девайс, нужно покупать под запрос. Например, линуксоиды привыкли покупать ноутбуки именно под Linux, а не первый попавшийся. Также и тут: если нужен OpenWrt, то роутер тоже надо выбирать с умом, а не надеяться на то, что кастомная прошивка сделает конфетку из роутера за 700 р.

В 2023 и 2024 появились интересные роутеры, которые уже поддерживаются проектом OpenWrt. Эти роутеры сделаны на базе ARM-процессоров. Такие роутеры появились у нескольких компаний, и дальше их количество будет только увеличиваться.

Читать далее
Всего голосов 242: ↑242 и ↓0+268
Комментарии241

Почему молодежь не хочет рожать и причём тут система образования

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров96K

"Я хочу пожить для себя" - говорят люди в 18, 20, 25 и даже 30 лет. И живут. Развивают карьеру, путешествуют, занимаются творчеством, уезжают покорять другие страны.

"Вы с ума посходили! А ну давайте срочно все рожайте!" - верещит государство, которому не хватает новых граждан.

Проблема актуальна не только для России, но и в целом для стран развитого мира. Да-да, именно в странах развитого мира есть целый этап развития, который характеризуется увеличением возраста рождаемости и уменьшением желания заводить детей в целом. (про демографический переход).

Тут важно понять две вещи.

Какие?
Всего голосов 207: ↑125 и ↓82+74
Комментарии2111

Как Linux создаёт и подсчитывает сокеты

Уровень сложностиСложный
Время на прочтение12 мин
Количество просмотров13K

Подробно о том, что происходит под капотом в ядре Linux, когда вы выполняете очередной системный вызов при работе с сокетами.

Читать далее
Всего голосов 33: ↑32 и ↓1+44
Комментарии2

Трассировка на Go

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров1.8K

Всем привет, этой мой первый пост на данной платформе, прошу любить и жаловать.

Трассировка — это важный инструмент для мониторинга и диагностики микросервисов. Она позволяет понять, как запросы проходят через систему, где возникают узкие места, и как взаимодействуют различные компоненты приложения. В этой статье я расскажу про свой опыт, как интегрировал трассировку в сервис на Go, использующий GORM.

Читать далее
Всего голосов 5: ↑5 и ↓0+5
Комментарии0

Битва за производительность: SparseMap vs GenerationsMap

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров5.3K

Есть такая занимательная структура данных, описанная в статье Russ Cox — sparse map.


Она используется, например, в недрах компилятора Go. А ещё в некоторых пакетах его стандартной библиотеки.


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


Читать дальше →
Всего голосов 26: ↑25 и ↓1+31
Комментарии8

Практические рекомендации по работе с Docker для Python-разработчиков

Время на прочтение28 мин
Количество просмотров104K

Прим. Wunder Fund: в этой длииинной статье вы найдете ряд полезных советов по работе с Docker, как общего характера, так и Python-специфичных. Хоть мы и давно используем Docker в работе, про некоторые советы мы подумали "а что, так можно было?". Советуем вначале пролистать статью, и отметить штуки, которые покажутся актуальными для вашей текущей ситуации.

Читать далее
Всего голосов 53: ↑52 и ↓1+65
Комментарии8

Собственная копия YouTube

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров43K


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

В итоге получается, что мы делаем нечто вроде маленькой копии YouTube, только на своём сервере. В определённом смысле это архивная копия на случай удаления видеоконтента из-за цензуры YouTube. Или на случай, если серверы YouTube станут недоступны с территории РФ из-за какого-то «технического сбоя».
Читать дальше →
Всего голосов 79: ↑78 и ↓1+102
Комментарии74

Аккумуляторы «Крона»: нюансы и подвохи

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров42K
Девятивольтовые батарейки, которые в России принято называть «Крона», довольно дорогие: солевые стоят от 60 рублей, щелочные от 130 рублей. В продаже появилось много аккумуляторов в формате «Кроны», позволяющие хорошо сэкономить там, где часто приходится менять такие батарейки. Но есть нюансы.



Читать дальше →
Всего голосов 99: ↑96 и ↓3+118
Комментарии115

Защищаемся от непрошеных звонков и рассылок — внимательно читаем закон о персональных данных

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров7.2K


Персональные данные стали ценным ресурсом, за которым, кажется, охотятся все. От безобидного «‎анонимного» опроса‎ до навязчивых рекламных звонков — путь личных сведений может быть непредсказуемым.


Давайте разберемся в тонкостях обработки персональных данных, научимся читать между строк пользовательских соглашений и узнаем, как противостоять большому брату в лице жадных до информации компаний. Приготовьтесь к погружению в лабиринты закона «О персональных данных» и хитросплетения документов, которые так часто подписывают не глядя. Вашим проводником выступит Анастасия Буренкова — специалист по защите персональных данных Бастион.

Читать дальше →
Всего голосов 21: ↑16 и ↓5+15
Комментарии18
1
23 ...

Информация

В рейтинге
2 046-й
Откуда
Москва и Московская обл., Россия
Зарегистрирован
Активность

Специализация

Backend Developer, Fullstack Developer
Middle
От 150 000 ₽
Python
RESTful API
Docker
Linux
Redis
Golang
PostgreSQL
Node.js
JavaScript
Web development