Pull to refresh
7
0
Perkovec @Perkovec

User

Send message

Бьемся с индексацией парных неравенств в PostgreSQL

Level of difficultyMedium
Reading time6 min
Views4K

Я уже не раз писал, что условия с несколькими неравенствами (<, <=, >=, >) обычно плохо подходят для индексирования "классическим" btree, вызывают "тормоза", и необходимо придумывать различные нетривиальные подходы в PostgreSQL, чтобы добиться хорошей производительности подобного запроса.

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

Читать далее
Total votes 18: ↑18 and ↓0+18
Comments2

Статический анализ структуры базы данных (часть 1)

Level of difficultyMedium
Reading time7 min
Views4.9K

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

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

Читать далее
Total votes 20: ↑20 and ↓0+20
Comments3

Как пишут SQL-запросы гуманитарии

Level of difficultyEasy
Reading time5 min
Views26K

Когда говорят «мы ускорили выполнение нашего запроса в N раз» это значит, что сначала сделали плохо а потом начали думать как улучшить.

Так я думал раньше.

Читать далее
Total votes 25: ↑20 and ↓5+15
Comments29

Как мы переехали с Oracle на PostgreSQL в нагруженном сервисе без даунтайма

Level of difficultyMedium
Reading time30 min
Views22K

Всем привет! Я Сергей, работаю в B2B-команде Яндекс Маркета последние 3,5 года. Как уже понятно из заголовка, сейчас я вам расскажу про yet-another-миграцию с базы на базу, которая началась в середине 2021 года и заняла почти год. Получается, мемуары.

Вас ждёт рассказ о том, как мы:

- несколько месяцев чинили тесты и делали трансформер;

- десятки раз переливали данные;

- чинили баги незаметно для пользователей;

- заставили сервис работать на PostgreSQL быстрее, чем он работал на Oracle.

Читать далее
Total votes 88: ↑89.5 and ↓-1.5+91
Comments15

Выжимаем максимум из PostgreSQL

Level of difficultyMedium
Reading time14 min
Views14K

Привет, Хабр! Меня зовут Максим, я работаю тестировщиком оборудования в Selectel Lab. В лаборатории мы занимаемся тестированием нового оборудования для дата-центров. О том, как мы измеряли производительность PostgreSQL на разных конфигурациях — под катом!
Читать дальше →
Total votes 48: ↑55.5 and ↓-7.5+63
Comments21

Потенциальные проблемы с автоинкрементным ключом. MySQL <8.0, PostgreSQL

Level of difficultyEasy
Reading time6 min
Views4.6K

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

Читать далее
Total votes 11: ↑11 and ↓0+11
Comments24

Реверс-инжиниринг сигнала автомобильного брелка

Level of difficultyEasy
Reading time10 min
Views13K

Я уже пару лет как изучаю протоколы радиосвязи. Началось это с момента, когда я из любопытства решил поэкспериментировать с USB-донглом RTL-SDR. Мне всегда хотелось понять, как передаются данные в пультах дистанционного управления (в частности, автомобильных брелках), попробовать перехватить их сигнал и выяснить, какие ещё в этом случае есть векторы атаки.

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

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

Ещё одной целью, пожалуй, будет доказательство, что большинство машин не так уж просто угнать посредством перехвата сигнала (разве что Honda, хах), несмотря на то, что недавно в Канаде запретили якобы опасный Flipper Zero, который можно собрать из дешёвых модулей беспроводной связи.
Читать дальше →
Total votes 78: ↑78 and ↓0+78
Comments21

Архитектура Хорошо Поддерживаемого драйвера для I2C/SPI/MDIO Чипа (или как писать код по понятиям)

Level of difficultyEasy
Reading time11 min
Views8.6K

В программировании микроконтроллеров часто приходится писать драйверы периферийных микросхем. Зачастую это 60% всего кода большинства проектов. В этом тексте я написал несколько общих нюансов разработки драйверов периферийных чипов.

Эти правила "написаны кровь".

Читать далее
Total votes 25: ↑18 and ↓7+11
Comments24

Диспетчер Задач для Микроконтроллера

Level of difficultyEasy
Reading time7 min
Views10K

В программировании микроконтроллеров часто нужно написать простые тестировочные прошивки. При этом надо некоторые функции вызывать чаще, а некоторые реже. Для этого, конечно, можно запустить FreeRTOS, однако тогда этот код не будет переносим на другие RTOS например Zephyr RTOS или TI-RTOS. Поэтому надо держать наготове какой-нибудь простенький NoRTOS планировщик.

В этот тексте я представил основные идеи алгоритма такого кооперативного планировщика.

Читать далее
Total votes 26: ↑24 and ↓2+22
Comments26

Введение в оптимизацию. Имитация отжига

Reading time10 min
Views181K
В этой статье я постараюсь максимально доходчиво рассказать о таком простом, но эффективном методе оптимизации, как имитация отжига (simulated annealing). А чтобы не быть причисленным к далёким от практики любителям теоретизировать, я покажу как применить этот метод для решения задачи коммивояжёра.

Для понимания статьи Вам понадобятся минимальные навыки программирования и владение математикой на уровне 9 класса средней школы. Статья рассчитана на людей не знакомых с методами оптимизации или только делающих первые шаги в этом направлении.

image


Читать дальше →
Total votes 148: ↑138 and ↓10+128
Comments37

Регулятор оборотов минидрели

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


Total votes 45: ↑44 and ↓1+43
Comments78

Как создать простой LoRa мессенджер: обмен зашифрованными текстовыми сообщениями между устройствами без интернета

Level of difficultyMedium
Reading time30 min
Views12K

В современном мире IoT, когда связь в отдаленных районах становится все более актуальной, технология LoRa (Long Range) предоставляет нам возможность создать дальнобойный, надежный, энергоэффективный и зашифрованный канал связи без необходимости иметь какую-либо сетевую инфраструктуру. 

В этой статье мы рассмотрим, как создать простой LoRa мессенджер с использованием своего протокола обмена и готовых модулей, работающих в режиме P2P (peer-to-peer) – не идеального, но интересного решения для обмена текстовыми сообщениями в условиях ограниченной инфраструктуры.

Для упрощения и автоматизации процесса обмена сообщениями мы воспользуемся Node-RED. Этот инструмент, помимо реализации основной логики обмена сообщениями, также предоставит графический интерфейс для мессенджера, что сделает процесс более доступным и интуитивно понятным. 

Выглядеть будет просто, потому что воспользуемся всем готовым :)

Свистать всех наверх!
Total votes 31: ↑29 and ↓2+27
Comments36

Вороной, Манхэттен, рандом

Level of difficultyEasy
Reading time34 min
Views16K

Это история про то, как не довести дело до конца, но получить уйму опыта, и вообще ни разу не обломаться.

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

Осторожно, очень много картинок!

Читать далее
Total votes 160: ↑160 and ↓0+160
Comments53

Повышаем быстродействие расчётов на примере медианного фильтра

Level of difficultyMedium
Reading time6 min
Views1.5K
Рассмотрим некоторые приёмы повышения быстродействия вычислительных программ на примере алгоритма медианного фильтра.
Читать дальше →
Total votes 7: ↑7 and ↓0+7
Comments1

Введение в планировщики иерархических сетей задач (HTN) на примере. Часть 1

Reading time9 min
Views2K

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

Читать далее
Total votes 11: ↑9 and ↓2+7
Comments3

Диплом специалиста ИБ. Часть №2 — Стационарное устройство SmartLight

Level of difficultyEasy
Reading time18 min
Views4K

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

Так вышло, что я заканчиваю университет в феврале 2024 года (направление 10.05.01 «Компьютерная безопасность» является специалитетом, поэтому студенты выпускаются традиционно зимой после 5,5 лет обучения). Соответственно, уже в прошедшем 2023 году передо мной, как и перед моими собратьями по специальности и курсу, возникла необходимость написания дипломной работы для получения квалификации специалиста по защите информации.

Данная статья является второй в цикле “Диплом специалиста ИБ”, в рамках которого я рассказываю про свой опыт написания выпускной квалификационной работы на программе высшего образования “Компьютерная безопасность”. В ней я расскажу про создание одного из устройств Интернета вещей - стационарного устройства SmartLight, разработка которого велась без реализации каких-либо предложенных мной в первой части механизмов защиты.

Читать далее
Total votes 12: ↑11 and ↓1+10
Comments10

Автоматическое Обновление Версии Прошивки

Level of difficultyEasy
Reading time6 min
Views4K

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

Какие-то сборки уходят в релиз, а какие-то в циркулируют на разных электронных платах внутри предприятия.

Как отличать прошивки между собой? Как понять, какая прошивка новее, а какая старее?

Проблема в том, что вручную обновлять номер версии прошивки очень утомительно.

В тексте представлен механизм автоматического увеличения версии прошивки

Подробности...
Total votes 17: ↑10 and ↓7+3
Comments51

Лазерный DIY или как с помощью дешевого гравера делать качественные платы

Level of difficultyEasy
Reading time5 min
Views30K


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

В этой статье хочу поделиться своей историей, как спонтанная покупка на местном маркетплейсе упростила процесс изготовления прототипов печатных плат в домашних условиях, сэкономив время, при этом повысив качество. Интересно? Тогда добро пожаловать под кат!
Читать дальше →
Total votes 93: ↑92 and ↓1+91
Comments94

Электроника для начинающих: собираем датчик направления магнитного поля. Пробуем лазерный метод изготовления

Level of difficultyEasy
Reading time3 min
Views12K

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

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

Читать далее
Total votes 32: ↑32 and ↓0+32
Comments24

Привлекательные структуры данных

Reading time7 min
Views25K

В процессе изучения разных алгоритмов и структур данных приходит понимание, что не все они применимы в прикладных задачах (в отличие от задач про Васю и Петю/Алису и Боба). Но тот факт, что алгоритм/структура данных не является полезной на практике не означает, что идеи в них содержащиеся не привлекают пытливые умы даже из чистого любопытства. Потому речь пойдёт о красивых (субъективно) и, что важно, простых с точки зрения концепции структурах данных. 

Помните: если что-то не компилируется, это псевдокод. 

Привлечься!
Total votes 78: ↑78 and ↓0+78
Comments16

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity