Алгоритм сбора персональных данных (ПДн) в WEB

Рекомендуемый алгоритм является следствием совокупности норм, содержащихся в нескольких статьях 152-ФЗ (ст. 3, п.1 части 1 ст.6, часть 1 ст.9, часть 2 ст.18.1 и др.).

В первой же веб-форме должны появиться:

* сообщение, в каких целях данные собираются

* ссылка на документ «Согласие...» или «Политику... » в отношении обработки перс.данных

* Чек-бокс/кнопка для установки признака согласия («галочка» не должна быть предустановлена) Человек должен самостоятельно выполнить активные активные действия на форме для выражения согласия

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

Дополнение: важно понимать, что «Политика .... ПДн» и «Согласие ... ПДН» — это всё-таки разные документы. Требования к «Согласию...» описаны в статье 9 152-ФЗ и имеют перечень того что там должно быть. И в отличии от «Политики...» оно («Согласие...») определяет конкретный случай сбора ПД, а не общий. Формально момент несколько спорный, но существующая  практика применения рекомендует всё-таки использовать «Согласие...».

(no subject)

Postgresql — выбрать самую «свежую»  реплику


#!/bin/sh

#set -e

psql -U postgres -d postgres -c "select * from pg_stat_replication;"

slave=$(psql --tuples-only -U postgres -d postgres "select client_addr from pg_stat_replication where usename='repluser' and sync_state='sync' order by flush_lag desc limit 1;")

echo $slave

username надо соответствующий указать вместо repluser


Быстрый рассчёт count(*) в PostgreSQL

Т.к. PostgreSQL использует модель базы MVCC (по сути каждая сессия/транзакция имеет собственную «копию» базы) — поэтому число записей в таблицах нигде не хранится.

На больших таблицах count(*) обходит все записи, что может быть очень долго.

Число строк в таблице можно быстро, но не точно вычислить запросом

SELECT

  (reltuples/relpages) * (

    pg_relation_size('ИМЯ_ТАБЛИЦЫ') /

    (current_setting('block_size')::integer)

  )

  FROM pg_class where relname = 'ИМЯ_ТАБЛИЦЫ';


И ещё более быстрый, но ещё менее точный вариант получения оценки числа строк:

SELECT reltuples FROM pg_class where relname = 'ИМЯ_ТАБЛИЦЫ';


О переименовании

В 4 веке "греки" в Константинополе построили Акведук Валента (император был такой, второй по нумерации ).

Через 11 веков, после очередной смены политического режима в стране и в результате идеологической политики девизантизации общества, водопровод переименовали в Акведук Боздоган Кемери (Серого Сокола).

Однако, по прошествии 6 веков его (водопровод, акведук — это водопровод по-русски) чаще всего в мире так и продолжают именовать Акведук Валента.

Акведук Валента
Акведук Валента


Windows 10 LTSC (LTSB) не видит bluetooth устройство

Т.к. LTSC/LTSB версии Windows 10 оооочень специфичные, то часто и с подключением устройств (наушники, мыши, клавиатуры) по bluetooth там есть проблемы — устройство не обнаруживается типовым способом:

  • зайти в Параметры Windows -> Устройства -> Bluetooth
  • включить bluetooth
  • перевести устройство в режим сопряжения
  • нажать кнопку [+] для поиска устройства
  • получить ошибку «Не удалось подключиться» и «На этом устройстве с Windows включите Bluetooth»

Решение:

[Win+R] и в командной строке запускаем Shell:::{28803F59-3A75-4058-995F-4EE5503B023C}

Далее переводим устройство в режим сопряжения, а на компе в открывшейся форме жмём кнопку [Добавить устройство] и далее следуем типовому процессу сопряжения.

В итоге в типовой форме управления Bluetooth (Параметры Windows -> Устройства -> Bluetooth) появятся искомые присоединённые устройства.


Полезности PostgreSQL

Как найти различия в данных между двумя идентичными по структуре таблицами

SELECT table1.*  FROM table1 LEFT JOIN table2  ON table1 = table2
WHERE  table2 Is NULL;

Как получить список значений в виде одной строки через запятую

Синтетический пример, возвращающий список идентификаторов записей со статусом=5 и созданных 31.12.2019. На выходе будет строка примерного вида «69, 1998, 1, 288, 287, 33, 404040» (идентификаторы не упорядочены)

SELECT array_to_string( array(
   SELECT t.id FROM table AS t
   WHERE date(t.created_at)='2019-12-31' AND t.status_id=5
), ', ');


Типовой список документации к информационной системе

  • Требования к системе
  • Концепция создания информационной системы
  • Технические задания/Частные технические задания
  • Пояснительная записка к Техническому проекту
  • Описание автоматизируемых функций
  • Проектное решение
  • Сценарии использования (Use Case)
  • Сценарии тестирования (Test Case)
  • Описание организационного обеспечения
  • Описание информационного обеспечения
  • Описание организации информационной базы
  • Описание комплекса технических средств
  • Проектная оценка надежности системы
  • Технологическая инструкция
  • Руководство по администрированию
  • Руководство пользователя
  • Инструкция по эксплуатации