Добавление aar библиотеки в Android Studio

В главном меню выбираем File -> New->New Module. В открывшемся окне выбираем Import .JAR/.AAR Package

Читать далее «Добавление aar библиотеки в Android Studio»

Очистка логов journalctl в Ubuntu

Для очистки логов по условиям: до даты или обрезать до такого-то размера (в кол-ве записей или в Мб) можно использовать встроенные команды:

journalctl --vacuum-size=128M 
journalctl --vacuum-time=1d

Записки ученика iOS программиста

 Все знания полученные здесь взяты из книги «Swift разработка приложений в среде Xcode для iPhone и iPad».

 Исходный код можно получить с сайта GitHub https://github.com/Apress/beg-iphone-dev-w-swift-3

  • для изменения иконки приложения лучше воспользоваться сервисом https://appicon.co Находим изображение размером 1024х1024 и передаем этому сервису? он сам вернет архив с нужными иконками.
  •  Создание кода при помощи которого можно форматировать текст через swift:
Читать далее «Записки ученика iOS программиста»

Блокировка ipv6 запросов к vsftpd

При настройке vsftpd и включении ufw происходит блокировка.

Если в файле vsftpd.conf установлены следующие параметры

  • listen=NO
  • listen_ipv6=YES

и еще включен firewall и у Вас не работает подключение к ftp, то можно попробовать следующее.

В файле vsftpd.conf установить следующие параметры:

  • listen=YES
  • а listen_ipv6=YES закомментировать.

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

  • Основным механизмом этого процесса является trigger в PostgreSql.Создается функция которая обновляет информацию о том, в каком состоянии находиться таблица. Состояние — это переменная в которой храниться время с типом данных double precision.
INSERT INTO core.sd_table_change (c_table_name, n_change)
VALUES (_c_table_name, (SELECT EXTRACT(EPOCH FROM now())))
ON CONFLICT (c_table_name) DO UPDATE
SET c_table_name = _c_table_name,
n_change = (SELECT EXTRACT(EPOCH FROM now()));
  • Далее создается триггер, который изменяет «состояние таблицы»
CREATE OR REPLACE FUNCTION core.cft_change_version() RETURNS trigger
   LANGUAGE plpgsql
   AS $$
BEGIN
   IF (TG_OP = 'INSERT' OR TG_OP = 'UPDATE') THEN
      select core.sf_table_change_update(t.c_table_name_ref) from  (select TG_TABLE_NAME as c_table_name_ref UNION select  c_table_name_ref from core.sd_table_change_ref where c_table_name = TG_TABLE_NAME) as t; END IF; RETURN NEW;
END
$$;
ALTER FUNCTION core.cft_change_version() OWNER TO mobnius;
COMMENT ON FUNCTION core.cft_change_version() IS 'Триггер. Обновление справочной версии';
  • Для хранения информации о состоянии, создается 2 таблицы:
  1. Состояние таблиц — имя таблицы и её числовое состояние
  2. Таблицы зависимых состояний
CREATE TABLE core.sd_table_change (
c_table_name text NOT NULL,
n_change double precision NOT NULL
);
ALTER TABLE core.sd_table_change OWNER TO mobnius;
COMMENT ON TABLE core.sd_table_change IS 'Изменение состояния таблицы';
COMMENT ON COLUMN core.sd_table_change.c_table_name IS 'Имя таблицы';
COMMENT ON COLUMN core.sd_table_change.n_change IS 'Версия изменения';

ALTER TABLE core.sd_table_change
ADD CONSTRAINT sd_table_change_pkey PRIMARY KEY (c_table_name);
CREATE TABLE core.sd_table_change_ref (
id smallint DEFAULT nextval('core.sd_table_change_ref_id_seq'::regclass) NOT NULL,
c_table_name text NOT NULL,
c_table_name_ref text NOT NULL
);
ALTER TABLE core.sd_table_change_ref OWNER TO mobnius;
COMMENT ON TABLE core.sd_table_change_ref IS 'Зависимость таблиц состояний';
COMMENT ON COLUMN core.sd_table_change_ref.c_table_name IS 'Таблица';
COMMENT ON COLUMN core.sd_table_change_ref.c_table_name_ref IS 'Зависимая таблица';

ALTER TABLE core.sd_table_change_ref
ADD CONSTRAINT sd_table_change_ref_pkey PRIMARY KEY (id);

ALTER TABLE core.sd_table_change_ref
ADD CONSTRAINT sd_table_change_ref_c_table_name_fkey FOREIGN KEY (c_table_name) REFERENCES core.sd_table_change(c_table_name) NOT VALID;

ALTER TABLE core.sd_table_change_ref
ADD CONSTRAINT "sd_table_change_ref_cTable_name_ref_fkey" FOREIGN KEY (c_table_name_ref) REFERENCES core.sd_table_change(c_table_name) NOT VALID;

Установка pgAdmin4 in Ubuntu

curl https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo apt-key add 
sudo sh -c 'echo "deb https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list && apt update'

Установка pgAdmin4

sudo apt install pgadmin4
Читать далее «Установка pgAdmin4 in Ubuntu»

PostgreSQL: преобразование строки в число

В базе данных доступны следующие строки:

Исходные данные

Требуется в колонке c_house_number, которая является типом text, найти число и сохранить преобразованное значение в новой колонке:

Читать далее «PostgreSQL: преобразование строки в число»

Bash-скрипт для переименования БД в PostgreSQL

#!/bin/bash
psql -c "SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE pid <> pg_backend_pid() AND datname = 'vote-dev';"
psql -c 'ALTER DATABASE "vote-dev" RENAME TO "vote-dev-db";'

Еще один способ логирования состояния сервера

В данной статье будет описан механизм мониторинга сервера. Суть мониторинга заключается в простом пробросе выходной информации на tcp-сервер, который ее в последствии и обработает:

  • [remote server] — IP или доменное имя TCP сервера для обработки информации
  • [port] — порт сервера

Каталог для хранения bash-скриптов находиться по адресу /var/lib/big-brother

Примечание: если нет такого каталога, то нужно его создать.

Читать далее «Еще один способ логирования состояния сервера»