Полезное

Всякое разное

Полезные ссылки

ГОСТ 19.701-90. Блок-схемы

http://docs.cntd.ru/document/gost-19-701-90-espd

Схемы состоят из символов, краткого пояснительного текста и соединяющих линий

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

При начертании символов рекомендуется придерживаться строгих размеров определяемых двумя значениями a и b
b рассчитывается из соотношения 2⋅a = 3⋅b
2021-01-06-003102_169x120_scrot.png

Данные

Процессы

Линии

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

Спецсимволы

Правила применения символов

Специальные условные обозначения

Примеры схем

get.jpg


Rqqget.jpg


wdHget.jpg


fjXget.jpg

ГОСТ Р 56920-2016. Тестирование программного обеспечения

http://docs.cntd.ru/document/1200134996

Термины

Голосование в Slack

Через стикеры

Тут и нечего объяснять, просто сообщение и под ним стикеры, может быть со стрелками вправо и влево (если два варианта), или может быть с номерами, или вообще как придумаешь
2021-01-17-124012_755x279_scrot.png

Polly

Полли это бот который вроде как может кучу всего и у него даже есть платные функции
Я с помощью него сделаю только опрос (дальше лезть не буду)


Не особо врубился как именно правильно добавить это приложение в свой слак. Я добавил через раздел приложения в самом слаке, а потом тыкнул по ссылке в статье и согласился там с разными правилами
https://www.polly.ai/help/slack/creating-polls

После этого становится доступна это страница
https://app.polly.ai

Выглядит так
2021-01-17-124930_1366x768_scrot.png

Как видно в левом баре, я добавил полли в рабочее пространство i-Space


Peek-2021-01-17-12-53.gif


Можно оформить опрос как через сам слак, так и через сайт https://app.polly.ai/

На сайте видна некоторая инфа (в самом слаке наверное тоже)


Сделал через сайт (там удобный и понятный интерфейс)
Вставил картинки через публичную шару

2021-01-17-133323_1366x768_scrot.png


2021-01-17-133022_1366x768_scrot.png


2021-01-17-133140_1366x768_scrot.png


Вот так выглядит с телефона

IMG_0090.JPG


Чтобы добавить голосование в приватный чат, нужно сначала заинвайтить в этот чат polly
Иначе в выпадашке для выбора куда отправить голосование не будет доступен этот приватный чат

Nextcloud

root@mars:~/nextcloud# cat start.sh 
docker run --name nextcloud \
	-e NEXTCLOUD_ADMIN_USER=vandud \
	-e NEXTCLOUD_ADMIN_PASSWORD=ZzaNNoeu.......YP \
	-d nextcloud:20.0.5-apache

Алгоритмы балансировки

RoundRobin - Каждое новое подключение передается новому серверу из пула серверов по кругу

WeightedRoundRobin - То же что и обычный RR, но у каждого сервера в пуле есть коэфициент, в соотв. с которым разные серверы из пула получают разное количество подключений (полезно когда сервера разной мощности)

LeastConnections - RR не учитывает количество активных соединений, а least connections учитывает и может передавать соединение на сервер с наименьшим количеством активных подключений (то есть поддерживает равным количество активных соединений с серверам из пула)

WeightedLeastConnections - То же что и обычный LeastConnections, только с весами (полезно когда сервера разной мощности)

SourceIDHash - Выбирает сервер на основе хэша ip-адреса клиента, таким образом клиент привязывается к конкретному серверу

[Least]ResponseTime - Сервер выбирается на основе времени ответа, то есть запрос передается тому кто быстрее

Weighted[Least]ResponseTime - Аналогично тому что выше, только с весами

LeastBandwidthMethod - Балансировка на основе нагрузки на пропускной канал. Запрос будет передан тому кто за определенный промежуток времени использовал меньше канала

ResourceBased - Требует установленного агента на сервере, который сообщает балансеру текущую нагрузку на сервер

FixedWeighting - Администратором четко указываются веса серверов, в соответствии с которыми происходит балансировка

URL Hash - Используется для записи и последующего чтения на распределенные серверы. По хэшу от url вычисляется сервер на который нужно записать файл, а потом по этому же хэшу вычисляется сервер с которого его нужно прочитать

rfc3339

https://datatracker.ietf.org/doc/html/rfc3339

Все даты и время принимаются как происходящие в текущей эре (между 0000AD и 9999AD)


Все время выражается с указанием смещения относительно UTC
Это исключает перепуточки из-за принятия локальных административных решений типа "летнее зимнее время"


"Z" - Суффикс прикладываемый ко времени, обозначающий UTC оффсет от 00:00
Произносится как "Zulu"

Zulu time, больше известное как "GMT" (Greenwich Mean Time) это время на нулевом меридиане


Следующие требования направлены на проблему неоднозначности при обозначения года двумя цифрами:


Так как правила летнего-зимнего времени для локальных таймзон запутаны и базируются на локальных непредсказуемых законах, то совместимость лучше всего достигается путем использования UTC
Эта спецификация не поставляет правил для локальных таймзон


Разница между локальным временем и UTC высчитвается как "local time minus UTC"
Соответственно UTC может быть высчитан как "local time minus offset"

Например: 18:50:00-04:00 - локальное врeмя и отрицательный оффсет -> 22:50:00Z


Если известно время в UTC, но незвестен оффсет, то такое время может быть представлено с оффсетом "-00:00"
Это не то же самое что и оффсет "Z" или "+00:00", который подразумевает что UTC и есть желаемое время


Если компоненты даты расположены от наименее точного к наиболее точному, то достигается одно очень удобное свойство
Если таймзоны одинаковые и представлены например как "Z" или "+00:00", то даты можно отсоритровать как строки


Человекочитаемость доказала свою важность в интернет протоколах. Человекочитаемость протоколов значительно сокращает стоимость дебагинга, но с другой стороны она добавляет проблемы совместимости
Например дата "10/11/1996" абсолютно непригодна для глобального обмена, потому что она будет интерпретировать по разному в разных странах

Так как нет формата дат легкочитаемого во всех странах, интернет клиенты должны трансформировать дату в локальный формат


date-fullyear   = 4DIGIT
date-month      = 2DIGIT  ; 01-12
date-mday       = 2DIGIT  ; 01-28, 01-29, 01-30, 01-31 based on
                             ; month/year
time-hour       = 2DIGIT  ; 00-23
time-minute     = 2DIGIT  ; 00-59
time-second     = 2DIGIT  ; 00-58, 00-59, 00-60 based on leap second
                             ; rules
time-secfrac    = "." 1*DIGIT
time-numoffset  = ("+" / "-") time-hour ":" time-minute
time-offset     = "Z" / time-numoffset

partial-time    = time-hour ":" time-minute ":" time-second
                     [time-secfrac]
full-date       = date-fullyear "-" date-month "-" date-mday
full-time       = partial-time time-offset

date-time       = full-date "T" full-time

Символы "T" и "Z" должны быть прописными


Секунда может быть равна 60 или 58 в определенные моменты (leap second, високосная секунда)
Этот момент не может быть предсказан далеко в будущее. О наступлении leap second объявляет за пару недель служба IERS


Примеры:

HTML URL Encoding

Урлы могут содержать только ASCII символы

Все символы выходящие за набор ASCII преобразуются в комбинацию из процента % и следующим за ним hex номером символа из ASCII таблицы

Пробелов в урле быть не может, поэтому они заменяются по той же схеме на %20 или могут быть заменены на плюсы +

JWT (JSON Web Token) / JWS (JSON Web Signature) / JWE (JSON Web Encryption) / JWK (JSON Web Key) / JWA (JSON Web Algorithms)

JWS - https://datatracker.ietf.org/doc/html/rfc7515
JWE - https://datatracker.ietf.org/doc/html/rfc7516
JWK - https://datatracker.ietf.org/doc/html/rfc7517
JWA - https://datatracker.ietf.org/doc/html/rfc7518
JWT - https://datatracker.ietf.org/doc/html/rfc7519
JOSE Examples - https://datatracker.ietf.org/doc/html/rfc7520


Что-то что я узнал из статьи https://ru.wikipedia.org/wiki/JSON_Web_Token:

Буду разбираться на примере jwt-токена который мне сгенерила центрифуга

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxIiwiZXhwIjoxNjU0MTc5MDg3fQ.xy8L4IQO1NsehSN2mkgSeLE2n6QxiTByZ7XHuWFmQh8

Токен состоит из трех частей: заголовок, пейлоад и подпись
Первые две представлены в виде json'а, закодированы в base64 и разделены точками

# echo 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxIiwiZXhwIjoxNjU0MTc5MDg3fQ.xy8L4IQO1NsehSN2mkgSeLE2n6QxiTByZ7XHuWFmQh8' | sed 's/\./\n/g'
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
eyJzdWIiOiIxIiwiZXhwIjoxNjU0MTc5MDg3fQ
xy8L4IQO1NsehSN2mkgSeLE2n6QxiTByZ7XHuWFmQh8
# echo 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxIiwiZXhwIjoxNjU0MTc5MDg3fQ.xy8L4IQO1NsehSN2mkgSeLE2n6QxiTByZ7XHuWFmQh8' | sed 's/\./\n/g' | head -n 2 | base64 -d - 2>/dev/null | jq
{
  "alg": "HS256",
  "typ": "JWT"
}
{
  "sub": "1",
  "exp": 1654179087
}

Header:

Payload:

Чтобы получить подпись, нужно взять первые две за'base64'ные части, закодировать их с использованием ключа и пропустить через base64
В моем случае ключ был такой:

# grep token_hmac_secret_key /etc/centrifugo/config.yaml
token_hmac_secret_key: "b06abc67-5044-415e-afff-843be892519c"

Пробуем сгенерить подпись:

# echo -n 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxIiwiZXhwIjoxNjU0MTc5MDg3fQ' | openssl dgst -sha256 -hmac 'b06abc67-5044-415e-afff-843be892519c' -binary | openssl base64 -e -A
xy8L4IQO1NsehSN2mkgSeLE2n6QxiTByZ7XHuWFmQh8=

Получается вот такая штука - xy8L4IQO1NsehSN2mkgSeLE2n6QxiTByZ7XHuWFmQh8=

Если выкинуть = то получается третья часть изначального токена

Zabbix 1.8.22

Zabbix поддерживает опрос данных (пуллер) и получение данных (траппер)

Термины 'pooler' и 'trapper' практически не переводимы на русский язык
Pooler - форк процессов “zabbix_server” и “zabbix_proxy”, который собирает с Zabbix агентов данные по элементам данных или например с SNMP устройств и др
Trapper - форк процессов “zabbix_server” и “zabbix_proxy”, который слушает порт (обычно 10051) и принимает данные от Zabbix агентов по активным проверкам или данные от zabbix_sender


Zabbix Agent'ы нужно обновлять реже чем Zabbix Proxy (при обновлении сервера)


Общее количество требуемого места на жестком диске под базу данных рассчитывается:
Конфигурация + История + Тенденции + События
После установки Zabbix такое дисковое пространство более не будет использовано сразу. Размер базы данных будет увеличиваться со временем, но потом рост все же остановится - это зависит от настроек очистки базы данных (Housekeeper)


Важно чтобы на сервере было точное вермя


Заббикс состоит из:

  1. Zabbix Server
    Проверяет разные сервисы, агенты сообщают ему метрики, является хранилищем (конфиг, статистика, оперативные данные), делает оповещения в случае проблем
    Может мониторить без агентов и с помощью snmp
  2. Zabbix Proxy
    Необязательный компонент, собирает метрики в буфер потом пересылает в ЗС, может быть использован для распределения нагрузки
  3. Zabbix Agent
    Собирает информацию с хоста и передает ЗС, является эффетивным (нативный)
  4. Web
    Веб интерфейс

Скачать 1.8.22 тут https://cdn.zabbix.com/zabbix/sources/oldstable/1.8/zabbix-1.8.22.tar.gz
Там все сразу


Установка

  1. Для сервера нужен непривилегированный пользователь (обычно zabbix), из под рута запускать опасно (процесс zabbix_server имеет защиту от запуска из под рута)
    Агент и сервер на одной машине рекомендуется запускать под разными пользователями (иначе агент будет иметь доступ к конфигам сервера и через веб можно будет дернуть конфиг сервера)