PostgreSQL 11: Мастерство разработки

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

CREATE UNIQUE INDEX some_name ON person USING btree (id) INCLUDE (name);

Если вы хотите получить «настоящее время», то пользуйтесь функцией clock_timestamp(), а не now().

Читать далее «PostgreSQL 11: Мастерство разработки»

Создание собственного Youtube сайта

В сложившейся ситуации на март 2022 года я решил найти замену Youtube. При простом поиске в интернете я нашел следующее ПО PeerTube.

Все инструкция находиться по адресу https://docs.joinpeertube.org/install-any-os?id=installation

Примечание: установку делал на Ubuntu 20.04

Видео ролик установки https://www.youtube.com/watch?v=62_fQwp3KTU

Добавление, разметка, монтирование нового жесткого диска в ubuntu

Понадобилось мне подключить к системе ubuntu 14.04 новый жесткий диск. Разобрал как это делается, с чем и хочу поделится с вами и для себя будет памятка.

У меня система развернута на сервере ESXi, к профилю виртуальной машины я добавил новых жесткий диск размером 500Gb. Запускаю систему и само собой она знать не знает чего мы там к ней подключили и как с ним работать.

Первым делом посмотрим какие вообще у нас устройства подключены

sudo fdisk -l

Видим что диск определился, но на нем отсутствует таблица разделов.

Читать далее «Добавление, разметка, монтирование нового жесткого диска в ubuntu»

SWIFT: создание второго потока

var workItem: DispatchWorkItem? = nil

...

override func viewDidAppear(_ animated: Bool) {
   super.viewDidAppear(animated)
        
   let indicator = activityIndicator()
   indicator.startAnimating()
        
   workItem = DispatchWorkItem {
            // долгая команда

   DispatchQueue.main.async {
       indicator.stopAnimating()
       indicator.hidesWhenStopped = true
       }
   }
   DispatchQueue.global(qos: .utility).async(execute: workItem!)
}

...

override func viewDidDisappear(_ animated: Bool) {
    if let workItem = workItem {
        workItem.cancel()
        self.workItem = nil
    }
}

Pentaho: ошибка вида gc overhead limit exceeded

Предыстория: заказчик жалуется, что через какое-то время построение отчетов становиться не доступно (построение Excel с большим количеством строк).

Справа — web-сервер, слева — база данных.

По нагрузке видно, что все ядра на сервере построения отчетов загружены на полную, но при этом нагрузки на СУБД нет.

Читать далее «Pentaho: ошибка вида gc overhead limit exceeded»

Настройка приема платежей через PayPal

Внимание: Платежная система PayPal с 31 июля 2021 г. прекратил осуществления клиентских внутренних переводов и платежей по России. Об этом говорится в заявлении компании. При этом пользователи системы в России по-прежнему смогут осуществлять перевод за рубеж или получать перевод из-за границы.

Прием платежей реализован через NodeJS и библиотеки express. Создаем проект и добавляем в зависимость npm модуль @paypal/checkout-server-sdk.

npm i @paypal/checkout-server-sdk

Прием платежей через PayPal реализуется в два этапа:

  1. создание (формирование) платежа клиентом.
  2. подтверждение приема платежа.
Читать далее «Настройка приема платежей через PayPal»

Установка настройка pgAgent

Оригинал инструкции размещен на сайте https://gist.github.com/peterneave/83cefce2a081add244ad7dc1c53bc0c3

  • Устанавливаем приложение
sudo apt update
sudo apt install pgagent
  • Далее создаем файл .pgpass в рабочей директории postgresql (/var/lib/postgresql)
sudo su - postgres
echo localhost:5432:*:pgagent:securepassword >> ~/.pgpass
chmod 600 ~/.pgpass
chown postgres:postgres /var/lib/postgresql/.pgpass
Читать далее «Установка настройка pgAgent»

Обновление NodeJS

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

Инструкция по обновлению следующая:

  • Скачиваем инсталяк
curl -sL https://deb.nodesource.com/setup_16.x -o nodesource_setup.sh
# тут setup_16.x номер версии node
  • Запускаем скрипт
sudo bash nodesource_setup.sh
  • Устанавливаем nodejs
sudo apt install nodejs

Оригинал статьи: https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-20-04-ru

Ошибка unable to verify the first certificate в NodeJS

Если в приложении express используется nodemailer и используется порт 25 без шифрования, то выходит вот такая ошибка.

Чтобы исправить это, нужно в файле /bin/www добавить

// добавлено специально, чтобы была рассылка писем с 25 порта
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";