bash, LinuxРекурсивное создание ZIP архивов

Если надо рекурсивно обойти все подпапки и все вложенные файлы добавить в отдельный ZIP-архив, а потом удалить оригинальный файл, то делается это так:

Можно с помощью bash-скрипта:

PostgreSQLКак забить таблицу рандомными данными для тестов?

Создаем функцию, в котором циклом делаем INSERT рандомных данных в нужную таблицу:

Linuxinit скрипт для pgpool

LinuxУстановка incremental fail2ban

Количество попыток логина через ssh по датам:

Если количество попыток логина велико – имеет смысл поставить fail2ban.

Качаем версию fail2ban с инкрементальным баном: ban-time-incr.zip.

Устанавливаем:

В конфиге влючаем bantime.increment = true.

Настраиваем скрипты автозапуска:

PostgreSQLСоздание простейшей процедуры и триггера

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

В процедуре намеренно используется quote_nullable вместо quote_literal, т.к. поля level или name могут иметь значение “null”. При таком значении подставляемые в запрос данные не обрамляются кавычками.

Теперь создадим триггер, который будет вызывать эту процедуру при добавлении записи в таблицу shard1.user, а также при редактировании полей name или level этой же таблицы:

Linux, PostgreSQLУстановка PostgreSQL 9.3 на Ubuntu

Установим пакет PostgreSQL:

Создаем папку для postgresql:

Меняем пароль:

Добавиляем строчку в конфиг vim /etc/postgresql/9.3/main/pg_hba.conf:

В главном конфиге /etc/postgresql/9.3/main/postgresql.conf меняем настройки:

Инициализируем:

Перезагружаем сервис Postgres:

PostgreSQLУдаление зависших PREPARED транзакций

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

В базе postgres получить список идентификаторов транзакций:

Далее для каждой базы откатить их:

PHPНастройка SPF и DKIM для отправки почты со своего сервера через Yandex

Настроить отправку почты через сервера Яндекса достаточно легко, а вот сделать так, чтобы письма как можно реже попадали в спам – не так просто, как показалось на первый взгляд. Вот список действий, которые помогли мне:

1) Для начала делегируем свой домен на Яндекс. Можно и просто почтой для домена воспользоваться.

2) Получаем токен для активации API Яндекс.Почты для доменов.

3) Далее получаем приватный ключ для DKIM через API следующим образом: https://pddimp.yandex.ru/dkim/status.xml?domain=ДОМЕН&token=ТОКЕН&secretkey=yes

Сам ключ находится в секции secretkey. Мне пришлось копировать его с исходного кода HTML-страницы, потому что в браузере он выводился в неправильном формате – в одну строку.

4) Если домен на Яндекс не делегирован, то нужно настроить TXT-запись для подомена mail._domainkey.domain.com. именно на том сервере, с которого производится отправка писем. Если домен делегирован на Яндекс, то все должно быть прописано автоматом.

5) Настраиваем TXT запись:

Если письма от имени вашего домена будут отправлять не только серверы Яндекса, а например, серверы, на которых размещён ваш сайт (какие-нибудь уведомления о регистрации или о заказах), эти серверы тоже нужно перечислить в SPF-записи. Вместо “v=spf1 redirect=_spf.yandex.ru” необходимо указать следующее значение: “v=spf1 ip4:IP-1 ip4:IP-2 ip4:IP-3 include:_spf.yandex.ru ~all”, где IP-1, IP-2, IP-3 — адреса тех серверов, с которых дополнительно отправляются письма.

6) Теперь почту с сервера легко можно отправлять через PHPMailer. В проекте на Yii я делаю это с помощью расширения YiiMailer:

Все действия с DKIM (вторая часть п.1 и остальные пункты) нужны только тогда, когда используется почта для домена. Если вы проделегировали домен, то цифровая подпись ставится автоматически – о чем и написано в мануале Яндекса.

LinuxЛогин root’а по SSH без пароля

В /root/.ssh/ добавляем файл authorized_keys с нашим публичным ключом. На папку ставим права 700, на файл 600. Перезапускаем sshd:

Выполняем: