PostgreSQL: Performance of function call degrades after calling 5 calls in a row

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

Ниже описано решение.

I have this plpgsql function (running PG 14.5 on UBUNTU 18.04 with 8GB Ram) which returns 200 rows just fine:

db=# explain (analyze,buffers) Select * from f_client_getlistasshown('{"limit":"200","startdate":"2014-01-01","enddate":"2100-01-01","showRequiresActionFromTaxadvisor":false}');

                    
--------------------------------------------------------------------------------------------------------------------------------
 Function Scan on f_client_getlistasshown  (cost=0.25..10.25 rows=1000 width=400) (actual time=69.515..69.529 rows=200 loops=1)
   Buffers: shared hit=8939 dirtied=1
 Planning Time: 0.066 ms
 Execution Time: 70.282 ms
(4 rows)
Читать далее «PostgreSQL: Performance of function call degrades after calling 5 calls in a row»

PostgreSQL: автоматический план

# postgresql.conf
session_preload_libraries = 'auto_explain'

auto_explain.log_min_duration = '3s'

Или

postgres=# LOAD 'auto_explain';
postgres=# SET auto_explain.log_min_duration = 0;
postgres=# SET auto_explain.log_analyze = true;
postgres=# SELECT count(*)
           FROM pg_class, pg_index
           WHERE oid = indrelid AND indisunique;

В итоге в /var/log/postgresql будет план запроса

Особенность работы Datalens в PostgreSQL. часть 2

Иногда при попытке запуска Datalens могут возникать странные проблемы отсутствия тех или иных объектов в БД (хотя они там есть).

Ошибка может быть связана в особенности PostgreSQL, когда по умолчанию схема public настроена, как «схема по умолчанию для вызова объектов».

Читать далее «Особенность работы Datalens в PostgreSQL. часть 2»

Beacon

  • https://github.com/vhiribarren/beacon-simulator-android?tab=readme-ov-file — Симулятор маяка
  • https://habr.com/ru/articles/278689/ — iBeacon. Мифы и реальность
  • https://vc.ru/services/1098953-ispolzovanie-tehnologii-ble-pri-rabote-s-beacon-mayachkom-v-react-native — Использование технологии BLE при работе с beacon-маячком в React Native
  • https://stackoverflow.com/questions/58004370/different-interval-time-between-ble-device-advertising-and-the-callback-from-sta — Разный интервал времени между рекламой устройства BLE и обратным вызовом из startScan телефона Android
  • https://habr.com/ru/companies/navigine/articles/269735/ — Как работают маяки: Физика технологии iBeacon
  • https://habr.com/ru/articles/245325/ — Навигация в помещениях с iBeacon и ИНС
  • https://www.dusuniot.com/ru/blog/angle-of-arrival-bluetooth-gateways/ — Как технология Bluetooth с определением угла прихода (AoA) модернизирует мир
  • https://moitvivt.ru/ru/journal/pdf?id=821 — Позиционирование в трехмерном пространстве внутри помещений по данным Bluetooth-маяков

Термины:

  • Magor и Minor — это идентификаторы пространства, например здание и помещение.
  • RSSI — мощность сигнала (например на расстоянии 1 метр)
  • PPS — количество пакетов в секунду (сканирование не менее 30 секунд)

Для расчета расстояние между BLE устройством и маячком на основе значения RSSI используем данную формулу:где:

d — расстояние до устройства (маячка),

TX Power — мощность сигнала, измеренная на стандартном расстоянии (обычно 1 метр) от маячка

RSSI — мощность сигнала,

n — коэффициент затухания сигнала (environmental factor), отражающий потери сигнала в среде; типичные значения находятся в диапазоне от 2 до 4.

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

Значение коэффициента затухания сигнала n зависит от конкретных условий окружающей среды, в которой происходит передача сигнала.

Открытое пространство без препятствий: Значениеnоколо 2. Это условие предполагает минимальное затухание сигнала, когда между устройствами нет значительных препятствий, и сигнал может распространяться прямолинейно.

Внутри помещений с препятствиями: Значениеnможет варьироваться от 2.5 до 3.5 или даже выше. В помещениях сигнал может отражаться от стен, потолков и других объектов, что увеличивает затухание. Более высокие значенияnиспользуются для учета этого дополнительного затухания.

Сложные условия с множеством препятствий: В помещении с высокой плотностью препятствий, таких как склады, производственные помещения или городские условия с множеством отражающих поверхностей, значение n может быть установлено в диапазоне от 4 до 5. Эти условия требуют более высокого коэффициента затухания для компенсации значительных потерь сигнала.

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

Интеграция Android Wear OS c мобильным устройством на Android

Задача: создать прототип приложения, которое позволяло бы получать частоту сердцебиения с часов на Wear OS и передавать эти данные на смартфон под управлением Android.

Подготовительные работы:

  1. Создать эмулятор с предустановленными Google Play сервисами
  2. Установить на эмулятор приложение из Google Play Wear OS (и с не официальных источников https://apkpure.com/wear-os-by-google-smartwatch/com.google.android.wearable.app/download)
  3. Создать эмулятор для Wear OS (у меня в примере использовался API 30)
  4. Выполнить сопряжение, используя следующую статью https://developer.android.com/training/wearables/get-started/connect-phone

Результат: будут созданы два приложения, один для часов, другой для смартфона и при этом из package name должен быть одинаковым. А судя из статьи https://stackoverflow.com/questions/48921165/syncing-data-items-between-mobile-device-and-wear ещё и подписи.

Читать далее «Интеграция Android Wear OS c мобильным устройством на Android»

VSCode — Disable ALL Auto Formatting on Save

Had the same problem, just bind ‘cmd + s’ to saving without formatting. press cmd+shift+p then search for save without formatting and click on the configure icon, then bind it with ‘cmd + s’, problem gone 🙂

Awesome. Followed your advice: View>Command pallete> typed «Save» on the text search field. See «File: Save without formatting» on far right cog-wheel icon setting (clicked it),

https://stackoverflow.com/questions/61827206/vscode-disable-all-auto-formatting-on-save

Очистка от лишних образов docker

Удаление контейнеров

docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)

Удаление образов

docker images -a | grep none | awk '{ print $3; }' | xargs docker rmi

According to the doc, the following command will delete images older than 48 hours.

docker image prune --all --filter until=48h