Слава нації
#StandWithUkraine

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

Блог з програмування, оптимізації та адміністрування систем

Логирование PHP скриптов отправляющих почту

// 16 Червня, 2013 | 15340 переглядів

Сегодня я расскажу как можно вести лог скриптов, что отправляют почту методами PHP.
Это удобно, если у вас на сервере поселился спаммер и вы не знаете где его искать, т.к. сами пути запускающих скриптов по-умолчанию не падают в /var/log/syslog или в /var/log/mail.log. Читати далі…

Команды управления пакетным фильтром pf

// 4 Червня, 2013 | 15283 переглядів

Наткнулся на список команд для управлением пакетным фильтром (фаерволом) pf.

pfctl -d выключить пакетный фильтр
pfctl -e включить пакетный фильтр
 
pfctl -f /etc/pf.conf загрузить конфиг из /etc/pf.conf
pfctl -n -f /etc/pf.conf проверить на ошибки /etc/pf.conf, но не загружать его
pfctl -R -f /etc/pf.conf загрузить только правила фитрации из /etc/pf.conf
pfctl -N -f /etc/pf.conf загрузить только правила NAT из /etc/pf.conf
pfctl -O -f /etc/pf.conf загрузить только опции из /etc/pf.conf
 
pfctl -F all сбросить всё
pfctl -F rules сбросить только правила фильтрации
pfctl -F queue сбросить только очереди
pfctl -F nat сбросить правила NAT
pfctl -F info сбросить всю статистику
pfctl -z clear очистить все счётчики
 
pfctl -s rules показать текущие правила фильтрации
pfctl -v -s rules show показать информацию по каждому правилу фильтрации
pfctl -vvsr показать текущие правила фильтрации с добавлением номера правила
pfctl -v -s nat показать текущие правила NAT отдельно по каждому правилу
pfctl -s nat -i xl1 показать правила NAT для интерфейса xl1
pfctl -s queue показать очереди
pfctl -s state показать текущее состояние таблиц
pfctl -s info показать статистику правил и состояние счётчиков
pfctl -s all показать все что можно
 
pfctl -t testtable -T show просмотр содержимого таблицы testtable
pfctl -t testtable -T show -v просмотр более подробной статистики по каждому адресу таблицы testtable
pfctl -t testtable -T add 192.168.1.1 добавление адреса 192.168.1.1 в таблицу testtable
pfctl -t testtable -T delete 192.168.1.1 удаление адреса 192.168.1.1 из таблицы testtable
pfctl -t testtable -T flush очистить таблицу testtable

Как переименовать имена файлов из одной кодировки в другую в Linux

// 1 Червня, 2013 | 1676 переглядів

Для этих целей существует отличная программа convmv.
Ставится она из репозитория довольно просто:

sudo apt-get install convmv

После чего вам просто необходимо указать папку, в которой необходимо совершить переименование файлов из одной кодировке в другую.
Например, мне нужно переименовать файлы из KOI8-R в UTF-8 рекурсивно вниз.
Делается это так:

convmv -r --notest -f koi8-r -t utf-8 Folder/

Опция --notest отвечает за переименование.
Т.е. без этой опции вы просто сделаете тест и посмотрите как файлы будут “выглядеть” в нужной кодировке.

Удачи.

Делаем запросы в PostgreSQL из nginx кэшируя с помощью Redis

// 23 Травня, 2013 | 10262 переглядів

Сегодня я расскажу как можно работать с базой данных PostgreSQL с помощью nginx’a без application’a (например, PHP или любого другого). Т.е. эта технология абсолютно не зависит от языка, на котором сделан сайт/проект/система.
Мы будем использовать мощь PostgreSQL в хранимых процедурах (stored procedures/functions), а кэшировать с помощью быстрого Redis.
Читати далі…

Как узнать версию Ubuntu и кодовое имя из командной строки

// 10 Травня, 2013 | 1900 переглядів

Иногда возникает необходимость определить версию Ubuntu. Делается это с помощью команды lsb_release, что предназначена для вывода информации о текущей версии дистрибутива Ubuntu.

lsb_release -a

Что для версии Ubuntu 13.04 выведет следующее:

No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 13.04
Release:	13.04
Codename:	raring

Как узнать статистику использования сетевого траффика в Linux

// 12 Квітня, 2013 | 2212 переглядів

Существует отличная консольная утилита для отображения информации о количестве переданной и принятой информацией по каждому сетевому интерфейсу с разбивкой по датам и визуальным отображением в как в консольном, так и графическом режимах. Имя этой утилиты — vnstat.
Читати далі…

PostgreSQL. Список таблиц с очень частой записью на диск

// 5 Квітня, 2013 | 1005 переглядів

Предел возможностей БД часто упирается в дисковые операции. Поэтому стоит оптимизировать эти операции, меняя логику, архитектуру, масштабируя и пр.
Запрос выведет статистику по таблицам в обратном порядке по сумме операций записи, т.е. сверху будут таблицы с наиболее интенсивной записью.

SELECT
    schemaname                                      AS schema,  -- схема
    relname                                         AS table,   -- таблица
    pg_size_pretty( pg_relation_size(relid) )       AS tsize,   -- размер
    n_tup_upd + n_tup_ins + n_tup_del               AS write,   -- операций записи (I/U/D)
    seq_scan + idx_scan                             AS read,    -- всего чтений
    n_tup_ins                                       AS ins,     -- операции INSERT
    n_tup_upd                                       AS upd,     -- операции UPDATE
    n_tup_del                                       AS del      -- операции DELETE
FROM
    pg_stat_user_tables
ORDER BY
    ( n_tup_upd + n_tup_ins + n_tup_del ) DESC

Кстати, так вы можете получить список всех индексов, а так — список неиспользуемых индексов.

Как проверить диск на ошибки и бэд-сектора в Linux

// 3 Квітня, 2013 | 91459 переглядів

Примером хорошего тона и здравого смысла является периодическая проверка диска на битые сектора (бэд-сектора, badblocks) и обычная проверка диска на ошибки записи и т.п.
Разберёмся что такое битые сектора.
Любимая Википедия говорит следующее:

Бэд-сектор, Повреждённый сектор — сбойный (не читающийся) или ненадежный сектор диска; кластер, содержащий сбойные сектора, или кластер помеченный таковым в структурах файловой системы операционной системой.

Следовательно, если в битом секторе были данные, то их ещё возможно восстановить, пока битых секторов не стало слишком много для конкретного файла.
Читати далі…

ТОП 16 PHP функций, что я использую каждый день

// 30 Березня, 2013 | 4218 переглядів

Решил написать ТОП 16 PHP функций, что я использую каждый день.
Будет полезно как начинающим разработчикам, так и профессионалам (хотя у них этот список может отличаться).
Это MUST HAVE функции, что обязательно нужно знать и уметь ими оперировать.
Читати далі…

Соответствия команд SVN и Git

// 14 Березня, 2013 | 632 переглядів

Я создал небольшую шпаргалку соответствий команд систем управления версиями SVN/Subversion и Git. Пользуйтесь! 😉

svnadmin create repo
 
git init
git add .

svn import file://repo
git commit

svn diff | less
git diff

svn diff -rrev path
git diff rev path

patch -p0
git apply

svn status
git status

svn revert path
git checkout path

svn add file
git add file

svn rm file
git rm file

svn mv file
git mv file

svn commit
 
git commit -a
git push remote

svn log | less
git log

svn blame file
git blame file

svn cat url
git show rev:path/to/file

svn list url
git show rev:path/to/directory

svn log -rrev url
svn diff -crev url
git show rev

svn copy https://example.com/svn/trunk
https://example.com/svn/tags/name
git tag -a name

svn list https://example.com/svn/tags/
git tag -l

svn log –limit 1 https://example.com/svn/tags/tag
git show tag

svn copy https://example.com/svn/trunk https://example.com/svn/branches/branch
git branch branch

svn switch https://example.com/svn/branches/branch
git checkout branch

svn list https://example.com/svn/branches/
git branch

svn update -r rev
git checkout rev

svn update
git checkout prevbranch

svn merge -r rev:HEAD https://example.com/svn/branches/branch
git merge branch

svn merge -c rev url
git cherry-pick rev

svn checkout url
git clone url

svn switch url
 
git checkout –track
 -b branch origin/branch

svn update
git pull