Роман Теличко

Заметки веб-разработчика/админа

5 вещей, что необходимо сделать после установки Ubuntu 18.04

// Май 1, 2018 | 3331 просмотров | комментариев (0)

1. Включаем дополнительные источники репозитория программного обеспечения

Для этого убираем комментарии (#) в блоке партнёров («partner») перед deb..., предварительно запустив

sudo apt edit-sources

или равносильная ей команда

sudo gedit /etc/apt/sources.list

2. Обязательно обновляем систему

sudo apt update && sudo apt -y upgrade && sudo apt -y dist-upgrade && sudo apt -y autoremove

3. Устанавливаем необходимый софт

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

sudo apt-get -y install apache2-utils arc-theme atop audacious cabextract chromium-browser curl etherwake flashplugin-installer gedit gimp git gnome-tweak-tool gparted gthumb htop imagemagick jq libreoffice mc meld mercurial mpv msttcorefonts net-tools nmap oathtool openjdk-11-jre openssh-server p7zip pwgen rsync shutter sshfs tmux unrar vlc wget whois

Читать далее…

PostgreSQL: Создание индекса для uuid[]

// Март 25, 2018 | 221 просмотров | комментариев (0)

Для начала что такое uuid:

UUID (universally unique identifier) — это стандарт идентификации, используемый в создании программного обеспечения, стандартизированный Open Software Foundation (OSF) как часть DCE — среды распределённых вычислений (Distributed Computing Environment (англ.)). Основное назначение UUID — это позволить распределённым системам уникально идентифицировать информацию без центра координации. Таким образом, любой может создать UUID и использовать его для идентификации чего-либо с приемлемым уровнем уверенности, что данный идентификатор непреднамеренно никогда не будет использован для чего-то ещё. UUID представляет собой 16-байтный (128-битный) номер.

В PostgreSQL, по умолчанию, нет индекса для столбцов массива uuid (uuid[]).
Для примера, вот простая таблица с столбцом массива uuid:

CREATE TABLE someitems (
    items uuid[]
);

Но когда мы пытаемся создать на нем индекс:

CREATE INDEX someitems_items_index ON someitems USING GIN (items);

Получаем следующую ошибку:

ERROR:  data type uuid[] has no default operator class for access method "gin"

Поэтому мы должны создать тип индекса, который понимает, как сравнивать элементы массива uuid (uuid[]).
Читать далее…

Установка и оптимизация Raspbian на Raspberry Pi

// Март 11, 2018 | 2849 просмотров | комментариев (0)

Начнём с Википедии, если для вас эти слова в новинку 🙂

Raspberry Pi — одноплатный компьютер размером с банковскую карту, изначально разработанный как бюджетная система для обучения информатике, впоследствии получивший намного более широкое применение и популярность, чем ожидали его авторы. Разрабатывается Raspberry Pi Foundation. Всего за пять лет было продано более 12,5 миллионов устройств.

Raspberry Pi 3 Model B

  1. Скачиваем и устанавливаем Raspbian на SD-карту
  2. Первая загрузка
  3. Настраиваем сеть
  4. Закрываем всё ненужное с помощью iptables
  5. Оптимизируем дисковые операции
  6. Оптимизируем оперативную память

Читать далее…

Простой способ узнать Time To First Byte (TTFB) используя cURL

// Январь 25, 2018 | 564 просмотров | комментариев (0)

Немного Википедии (хоть и переведенной на русский)

Time To First Byte («Время до первого байта, TTFB) — это измерение, используемое как указание на отзывчивость веб-сервера или другого сетевого ресурса.

TTFB измеряет продолжительность от пользователя или клиента, делающего HTTP-запрос к первому байту страницы, получаемой браузером клиента. Это время составлено из времени соединения сокета, времени, затраченного на отправку HTTP-запроса, и времени, затраченного на получение первого байта страницы. Хотя иногда неправильно понимается как вычисление после DNS, исходный расчет TTFB в сети всегда включает задержку сети в измерении времени, которое требуется для начала загрузки ресурса.

Часто меньший (более быстрый) размер TTFB рассматривается как ориентир хорошо настроенного серверного приложения. Например, более низкое время до первого байта может указывать на меньшее количество динамических вычислений, выполняемых веб-сервером, хотя это часто происходит из-за кэширования на уровне DNS, сервера или приложения. Чаще всего наблюдается очень низкий TTFB со статически обслуживаемыми веб-страницами, в то время как более крупный TTFB часто встречается с большими, динамическими запросами данных, извлекаемыми из базы данных.

Узнать TTFB (в секундах), используя cURL, можно следующим образом:

curl -q -o /dev/null -w "\nConnect: %{time_connect}\nTTFB: %{time_starttransfer}\nTotal time: %{time_total} \n" https://romantelychko.com

Что выведет приблизительно следующее:

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 14053    0 14053    0     0  14053      0 --:--:-- --:--:-- --:--:--  201k

Connect: 0,008494
TTFB: 0,067665
Total time: 0,068982 

Читать далее…

Средний LA (Load Average) за сутки используя статистику atop

// Март 2, 2017 | 397 просмотров | комментариев (0)

Начнём с того что такое atop.
atop — продвинутый интерактивный полноэкранный монитор производительности, расширенный аналог top. Позволяет контролировать загрузку ЦПУ, ОЗУ, HDD, сети и многое другое. На мой взгляд, является самым удобным инструментом для мониторинга состояния системы, поскольку собирает всю необходимую информацию вместе. Важной особенностью является возможность сохранения данных в файл собственного двоичного формата, что мы и будем использовать для решения этой задачи.
Я не буду останавливаться на возможностях atop в рамках этой статьи.

После инсталляции atop складывает свою статистику в файлы (по дням) в папку /var/log/atop/.

С помощью опции -r <путь_к_файлу> указывается какой именно дамп будет считан.
Для ещё более точного определения диапазона за этот день можно использовать опции -b время старта (в формате hh:mm) и -e время окончания (в формате hh:mm)
Если нас интересует статистика только по некоторым параметрам, мы можем указывать это с помощью опции -P. Значения могут быть следующие:

  • PRC — Process level totals
  • CPU — CPU utilization
  • CPL — CPU load information
  • MEM — Memory occupation
  • SWP — Swap occupation and overcommit info
  • PAG — Paging frequency
  • LVM/MDD/DSK — Logical volume/multiple device/disk utilization
  • NET — Network utilization (TCP/IP)

Тогда средний LA (Load Average, параметр CPL) за сутки (в примере это 20170302) можно вывести используя следующее:

atop -PCPL -r /var/log/atop/atop_20170302 | grep 'CPL' | awk -F ' ' '{print $8}' | awk '{ total += $1 } END { print "LA AVG: " total/NR }'

Что выведет:

LA AVG: 2.155

Подобным образом можем посчитать максимальное значение:

atop -PCPL -r /var/log/atop/atop_20170302 | grep 'CPL' | awk -F ' ' '{print $8}' | awk '{ if(max<$1) { max=$1 } } END { print "LA MAX: " max }'

Что выведет:

LA MAX: 3.46

Точно так же вы можете отобразить и другие параметры.
Это всё. Удачи.

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

// Декабрь 2, 2016 | 28773 просмотров | 5 комментариев

pgAdmin4Обновился графический интерфейс для управления СУБД PostgreSQL — pgAdmin 4. Будем надеяться что новая версия не будет так сильно «сыпаться» 🙂
Пока ещё нет ни deb-пакета, ни ссылок на репозиторий, но попробовать уже хочется 🙂

Так что сегодня я расскажу как поставить pgAdmin4 в режиме клиента (pgAdmin4 Desktop)
Читать далее…

Потоковая репликация в PostgreSQL 9.6

// Ноябрь 27, 2016 | 17174 просмотров | комментариев (0)

Потоковая репликация (streaming replication) является передачей записей из WAL (Write-Ahead Log) от мастера к репликам. Писать при этом можно только в мастер, но читать можно как с мастера, так и с реплик. В итоге мы получаем не просто горизонтальное масштабирование, а ещё и отказоустойчивую архитектуру (failover).
Приступим к настройке реплики.

  1. Начальные условия
  2. Устанавливаем PostgreSQL 9.6 в Debian 8 (jessie) на оба сервера
  3. Настраиваем мастер (master)
  4. Настраиваем слейв (slave)
  5. Всё работает? Всё работает!
  6. А давайте что-то поломаем?!
  7. Догоняем прежний мастер до актуального состояния и возвращаем ему прежний статус

Начальные условия

Возьмём 2 сервера (в моём случаи — виртуальные машины) с чистым Debian 8.6 (jessie) amd64.

  1. master: 192.168.0.100
  2. slave: 192.168.0.200

Читать далее…

Какие команды терминала вы используете чаще всего?

// Октябрь 13, 2016 | 101 просмотров | комментариев (0)

Многие из нас используют командную строку на регулярной основе.
А вы когда-нибудь задавались вопросом, какие команды вы используете чаще всего? Есть очень простой способ выяснить.

Выполните следующую команду в окне терминала, чтобы увидеть список 10 наиболее часто используемых терминальных команд:

history | awk '{print $2}' | sort | uniq -c | sort -rn | head -10

Интерестно, не правда ли?

За полгода использования моей Ubuntu 16.04 LTS мой топ-10 список составил следующие команды:

    686 ssh
    251 sudo
    217 ll
    170 cd
     92 up
     85 hg
     70 cat
     56 scp
     51 pwgen
     44 aps

Софт по-умолчанию для Ubuntu Gnome 16.04

// Сентябрь 17, 2016 | 638 просмотров | комментариев (0)

В начале

sudo vi /etc/apt/sources.list
sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade

Софт по-умолчанию

sudo apt-get install chromium-browser aptitude unrar p7zip safe-rm sshfs pwgen imagemagick msttcorefonts mc openssh-server tmux htop atop meld cabextract gthumb fdupes mplayer vlc easytag audacious rsync libreoffice gparted git mercurial subversion shutter etherwake guake whois nmap rpl openjdk-9-jre gnome-shell-extension-weather

Дополнительный софт

Читать далее…

Делаем ввод паролей в терминале видимым

// Август 11, 2016 | 688 просмотров | комментариев (0)

Каждый раз, когда вы используете sudo — терминал попросит вас ввести пароль пользователя.
Это отличная мера безопасности, тут никто не спорит. Но терминал не предлагает никакой визуальной обратной связи при вводе пароля. Это часто сбивает с толку.
Добавить такую связь довольно просто в результате чего мы будем при вводе видеть «звездочки».

  1. Открываем терминал (часто сочетанием клавиш Ctrl+Alt+T) и вводим
    sudo vi /etc/sudoers
  2. Находим строчку
    Defaults env_reset

    и заменяем её на

    Defaults env_reset,pwfeedback

    visible_passwd_sudoers

  3. Сохраняем наш файл через :wq! (для программы vi)
  4. И вот, теперь вы видим такой результат при вводе:
    visible_passwd_result

Удачи!