Установка pfx сертификата на NGINX

Требуется при помощи программы openssl преобразовать *.pfx сертификат в два файла: открытый сертификат и приватный ключ.

Примечание: если установлен GIT то openssl можно использовать и оттуда:

C:\Program Files\Git\usr\bin\openssl.exe

Внимание: при работе с сертификатом *.pfx требуется пароль для работы с ним без.

Читать далее «Установка pfx сертификата на NGINX»

Обновление Apache2 на Ubuntu 20.04 до версии 2.4.51

Устанавливаем все обновления

sudo apt update && sudo apt upgrade -y

Примечание: мы изначально предполагаем, что apache2 установлен на сервере.

Проверяем версию apache2

apache2 -v
# Server version: Apache/2.4.41 (Ubuntu)
Читать далее «Обновление Apache2 на Ubuntu 20.04 до версии 2.4.51»

JavaScript для глубокого обучения TensorFlow.js

Данная статья является кратким изложением книги «JavaScript для глубокого обучения: TensorFlow.js»

Простой пример машинного обучения для «линейных» данных:

const trainData = {
    sizeMB: [0.080, 9.000, 0.001, 0.100, 8.000,
        5.000, 0.100, 6.000, 0.050, 0.500,
        0.002, 2.000, 0.005, 10.00, 0.010,
        7.000, 6.000, 5.000, 1.000, 1.000],
    timeSec: [0.135, 0.739, 0.067, 0.126, 0.646,
        0.435, 0.069, 0.497, 0.068, 0.116,
        0.070, 0.289, 0.076, 0.744, 0.083,
        0.560, 0.480, 0.399, 0.153, 0.149]
};

const testData = {
    sizeMB: [5.000, 0.200, 0.001, 9.000, 0.002,
        0.020, 0.008, 4.000, 0.001, 1.000,
        0.005, 0.080, 0.800, 0.200, 0.050,
        7.000, 0.005, 0.002, 8.000, 0.008],
    timeSec: [0.425, 0.098, 0.052, 0.686, 0.066,
        0.078, 0.070, 0.375, 0.058, 0.136,
        0.052, 0.063, 0.183, 0.087, 0.066,
        0.558, 0.066, 0.068, 0.610, 0.057]
};

const trainTensors = {
    sizeMB: tf.tensor2d(trainData.sizeMB, [20, 1]),
    timeSec: tf.tensor2d(trainData.timeSec, [20, 1]),
};

const testTensors = {
    sizeMB: tf.tensor2d(testData.sizeMB, [20, 1]),
    timeSec: tf.tensor2d(testData.timeSec, [20, 1]),
};

const model = tf.sequential();
model.add(tf.layers.dense({inputShape: [1], units: 1}));
model.compile({optimizer: 'sgd', loss: 'meanAbsoluteError'});

(async function() {
    await model.fit(trainTensors.sizeMB, trainTensors.timeSec, { epochs: 200 });
    model.evaluate(testTensors.sizeMB, testTensors.timeSec).print();

    model.predict(tf.tensor2d([[7.8]])).print();
})();

Скачать книгу можно с ресурса https://1drv.ms/b/s!AnBjlQFDvsITgqFSIHj1pfyIoIcfGg?e=qdLYsi

Как определить общее количество открытых/активных подключений в ms sql server 2005

Показывает количество подключений на каждый БД:

SELECT 
    DB_NAME(dbid) as DBName, 
    COUNT(dbid) as NumberOfConnections,
    loginame as LoginName
FROM
    sys.sysprocesses
WHERE 
    dbid > 0
GROUP BY 
    dbid, loginame

И это дает общее количество:

SELECT 
    COUNT(dbid) as TotalConnections
FROM
    sys.sysprocesses
WHERE 
    dbid > 0

Оригинал статьи: https://techarks.ru/qa/database/kak-opredelit-obshee-koliches-AS/

PostgreSQL размер таблиц и индексов

SELECT
    TABLE_NAME,
    pg_size_pretty(table_size) AS table_size,
    pg_size_pretty(indexes_size) AS indexes_size,
    pg_size_pretty(total_size) AS total_size
FROM (
    SELECT
        TABLE_NAME,
        pg_table_size(TABLE_NAME) AS table_size,
        pg_indexes_size(TABLE_NAME) AS indexes_size,
        pg_total_relation_size(TABLE_NAME) AS total_size
    FROM (
        SELECT ('"' || table_schema || '"."' || TABLE_NAME || '"') AS TABLE_NAME
        FROM information_schema.tables
    ) AS all_tables
    ORDER BY total_size DESC
) AS pretty_sizes

Оригинал: Naik’s blog PostgreSQL размер таблиц и индексов — Naik’s blog (kesh.kz)

Сбор основных показателей сервера Ubuntu

Для выполнения данной операции используется стандартная утилита top.

Выполняем crontab -e и добавляем следующую строку:

*/1 * * * * top -bi -n1 >> top.log

Указанная инструкция означает, что выполнять нужно каждую минуту команду top -bi -n1

Результат выполнения top -bi -n1

Далее после сбора данных, требуется прочитать информацию при помощи скрипта написанного для nodejs:

Читать далее «Сбор основных показателей сервера Ubuntu»

Сбор основных показателей PostgreSQL

Настраиваем периодический сбор данных при помощи psql:

sudo su - postgres
crontab -e
# добавляем следующий код
*/15 * * * * psql -U postgres -d postgres -c "SELECT datname, xact_commit, now(), numbackends FROM pg_stat_database where datname = 'cic-release-db' or datname = 'hangfire'" >> /var/lib/postgresql/pg_stat_database.log

Примечание: имена таблиц в pg_stat_database указывать свои.

Читать далее «Сбор основных показателей PostgreSQL»

Добавление Swap в Ubuntu Server

По умолчанию сервера Google Cloud Platform предоставляются без swap, а это плохо, потому что если используется e2-micro оперативная память в 1G быстро закончится.

Чтобы оставить сервер работоспособным можно подключить swap:

При настройки swap использовался сервер Ubuntu 18.04

sudo swapon --show # проверяем наличие swap
sudo fallocate -l 1G /swapfile # создаем файл размер 1G или можно указать 1024M
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile # включаем swap
sudo swapon --show # проверяем swap
sudo nano /etc/fstab # настраиваем подключение диска
/swapfile swap swap defaults 0 0

Все должно работать. Оригинал тут How to Add Swap Space on Ubuntu 18.04 — Google Cloud (cloudbooklet.com)

Ещё одна статья по изменению существующего swap

  1. Turn off all swap processes
1sudoswapoff -a

2. Resize the swap

1sudoddif=/dev/zeroof=/swapfilebs=1G count=8

if = input file
of = output file
bs = block size
count = multiplier of blocks3. Change permission

1sudochmod600 /swapfile

4. Make the file usable as swap

1sudomkswap /swapfile

5. Activate the swap file

1sudoswapon /swapfile

6. Edit /etc/fstab and add the new swapfile if it isn’t already there

1/swapfilenone swap sw 0 0

7. Check the amount of swap available

1grepSwapTotal /proc/meminfo