Установка расширения Google Chrome без публикации в интернет-магазине Chrome

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

Уважаемый разработчик!
Ваш продукт для Google Chrome (название: "WAFriends", идентификатор: cpjembijgjehhiakijmcdjbncingfdip) нарушил наши правила и был удален из сервиса "Интернет-магазин Chrome".
Ваш продукт нарушает следующий раздел документа "правила программы":
"Спам и размещение в магазине"
Отсутствуют описание объекта в соответствующем поле, значки или скриншоты. Кроме того, объект вызывает подозрения.

1) Если расширение было установлено через "Загрузить распакованное расширение" удаляем.
2) Жмем "Упаковать расширение", выбираем каталог с расширением (ключ не нужен), в итоге появляются два файла zzzz.crx и zzzz.pem 
3) Устанавливаем zzzz.crx посредством drag-and-dropping на страницу расширений chrome://extensions
4) После перезагрузки браузера расширение будет отключено "Unsupported extensions disabled" 
5) Вносим (добавляем) ИД расширения в белый список, ИД на странице расширений отображается не полностью, потому ищем по наименованию каталога
C:\Users\user\AppData\Local\Google\Chrome\User Data\Default\Extensions\koajdlofjfmhmlblclllndnhmjedpnjd
6) Перезагружаем браузер, на странице расширений видим надпись "Этим браузером управляет ваша организация."

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\ExtensionInstallWhitelist]
"1"="llndpnjdkoajdldnhofjfmhmlblclmje"
"2"="koajdlofjfmhmlblclllndnhmjedpnjd"
Безымянный2 wafriends.crx wafriends.reg

Permission denied (publickey,gssapi-keyex,gssapi-with-mic)


ssh -v -i /root/test_keys/id_dsa test@test.test
...
debug1: Skipping ssh-dss key /root/test_keys/id_dsa - not in PubkeyAcceptedKeyTypes
...
Permission denied (publickey,gssapi-keyex,gssapi-with-mic)

ssh -i /root/test_keys/id_dsa test@fortest.host -o "PubkeyAcceptedKeyTypes +ssh-dss"
The new openssh version — 7.0+ does not support DSA keys anymore

Drop default constraint on a column in TSQL


DECLARE @tableName VARCHAR(MAX) = 'm_PWT'
DECLARE @columnName VARCHAR(MAX) = 'countInDoc'
DECLARE @ConstraintName nvarchar(200)
SELECT @ConstraintName = Name 
FROM SYS.DEFAULT_CONSTRAINTS
WHERE PARENT_OBJECT_ID = OBJECT_ID(@tableName) 
AND PARENT_COLUMN_ID = (
    SELECT column_id FROM sys.columns
    WHERE NAME = @columnName AND object_id = OBJECT_ID(@tableName))
IF @ConstraintName IS NOT NULL
    EXEC('ALTER TABLE '+@tableName+' DROP CONSTRAINT ' + @ConstraintName)

vcpkg

Управление библиотеками в MS Visual Studio Без vcpkg каждую библиотеку придётся ставить по отдельности. Пакетный менеджер vcpkg автоматизирует скачивание и сборку библиотек на машине разработчика. Он интегрируется в Visual Studio и для подключения библиотек не нужно ничего отдельно прописывать в каждом проекте. Сначала качаем Cmake c официального сайта. Потом ставим его и обязательно прописываем в пути. Дальше либо читаем полное описание либо по-быстрому:
:: Клонируем репозиторий vcpkg (ветка master)
git clone https://github.com/Microsoft/vcpkg

:: Переходим в каталог клона репозитория
cd vcpkg

:: Выполняем скрипт для сборки vcpkg
powershell -exec bypass scripts\bootstrap.ps1
:: Теперь в корне репозитория лежит vcpkg.exe, который можно вызывать
::  из каталога либо добавить в переменную окружения PATH.
vcpkg --triplet x86-windows-static  для 32 бит 
Или на выбор:
arm-uwp.cmake
x64-uwp.cmake
x64-windows-static.cmake
x64-windows.cmake
x86-uwp.cmake
x86-windows-static.cmake
x86-windows.cmake
:: Включаем интеграцию во все проекты Visual C++ в системе.
:: При первом запуске нужны права администратора.
vcpkg integrate install

:: Удаляем интеграцию - если она вам помешала.
vcpkg integrate remove

:: Ищем пакеты
vcpkg search opencv4 

Ставим OpenCV 
vcpkg -- triplet x64-windows-static install opencv4[contrib]

CMake projects should use: "-DCMAKE_TOOLCHAIN_FILE=C:/bin/vcpkg/scripts/buildsystems/vcpkg.cmake"

И еще на почитать 
https://docs.microsoft.com/en-us/cpp/build/vcpkg?view=vs-2019

Get list of AD groups a user is a member of

Нужно получить список групп пользователя домена. Самое простое
net user userxxx /domain
но наименование группы обрезается до 21 символа, печалька Воспользуется повершелом
Для текущего пользователя:
(New-Object System.DirectoryServices.DirectorySearcher("(&(objectCategory=User)(samAccountName=$($env:username)))")).FindOne().GetDirectoryEntry().memberOf
Для указанного:
$env:username="userxxx";(New-Object System.DirectoryServices.DirectorySearcher("(&(objectCategory=User)(samAccountName=$($env:username)))")).FindOne().GetDirectoryEntry().memberOf

Download and merge HTTP Live Streaming .ts files

Скачиваем и собираем кусочки видео и отдельно аудио файлов (в данном случае их там тысячи, в m3u8) в один с подготовкой к проигрыванию стандартным элементом <video> html5

/usr/local/bin/ffmpeg -copyts -i "https://media-store-n.ru/api/v1/buckets/hls.webinar.ru/objects/56547.audio.128kbps.master.m3u8" -copyts -i "https://media-store-n.ru/api/v1/buckets/hls.webinar.ru/objects/56547.video.720p.master.m3u8" -muxpreload 0 -muxdelay 0 -vcodec copy -acodec mp3 -af "aresample=async=1000" -movflags faststart "/usr/local/www/nginx-mneti/dv/loaded/56547.mp4"
(ссылки нерабочие)

пытаемся избавиться от рассинхронизации видео и звука, -copyts -muxpreload 0 -muxdelay 0 -af «aresample=async=1000»
видео поток просто копируем, звук конвертируем в -acodec mp3
подготавливаем к просмотру html5 элементом video, -movflags faststart

http streamed MP4 video seekable with php-frm and nginx

Видео проигрывается, заставим работать быструю перемотку (без скачивания всего файла)
Воспользуемся возможностями нгинкса, именно он будет обрабатывать заголовки с «Content-Range»

    <video width="80%" height="80%" controls autoplay>
      <source src="https://www.mneti.ru/dv/loaded/getmp4.php?vid=<?= intval($_GET['vid']??0) ?>" type="video/mp4">
      Your browser does not support the video tag.
    </video>
часть содержимого getmp4.php, что-то там анализируем в php и если все ок, отдаем полный контроль по отдаче фала в nginx

$file = intval($_GET['vid']??0) . '.mp4';
header("Content-Type: video/mp4");
header( 'X-Accel-Buffering: no' ); //avoid nginx buffering.
header("X-Accel-Redirect: /stream_video/$file");
exit;    
настройка реального расположения файлов nginx.conf

    location /stream_video {
        internal;
        alias /var/www/video;
    }

Драйвер двигателей для WeMos D1

WeMos_Driver WeMos_Driver2 Wemos D1 работает на 3,3 В. Большинство драйверов двигателей для Arduino используют 5В логику. Поэтому чтобы не городить согласование логики можно использовать WEMOS I2C Dual Motor Driver.  Про него хорошо написано здесь и здесь Здесь ссылка на GITHUB откуда можно скачать библиотеку для работы с шилдом. I2C адрес 0x30 (по умолчанию), но можно изменить на 0x2D, 0x2E, 0x2F используя перемычки AD0, AD1 на обратной стороне платы модуля. Допускается использовать двигатели с рабочим напряжением от 4,5 до 13,5 В и номинальным током до 1,2 А.