iRedMail Установка и настройка

iReadMail пожалуй один единственный почтовый сервер, установку которого запустил и все произошло само собой.  Единственное что вам необходимо — только поставленная операционная система. Я использовал Debian 7. После установки у вас будет уже установленный настроенный apache, база данных, антивирус, панель администрирования iRedAdmin, веб-интерфейс почты RoundCube, статистика AwStat и прочее безобразие. […]

Шпаргалка по работе с Git

Подборка команд для работы с системой контроля версий git, которые очень пригодятся в повседневной работе программиста. Большая часть команд подойдёт для работы по методологии git flow или feature branches. Однако, часть команд может противоречить воркфлоу вашей компании.

Шпаргалка по работе с Selenium, Webdriver и PhantomJS на PHP

Небольшой список рецептов, ссылок и советов которые будут полезны при работе с Selenium, Webdriver или PhantomJS на PHP. Webdriver PHP API cheatsheet https://gist.github.com/aczietlow/7c4834f79a7afd920d8f Как работать с ожиданием элементов https://github.com/facebook/php-webdriver/wiki/HowTo-Wait Работа со вкладками, алертами и фреймами https://github.com/facebook/php-webdriver/wiki/Alert,-tabs,-frames,-iframes Так работать с Selenium Webdriver через прокси https://github.com/facebook/php-webdriver/wiki/HowTo-Work-with-proxy

Laravel Horizon: выполнение задач с продолжительностью более 60 секунд

Ещё одна откровенная тупость в Laravel Horizon — по-умолчанию все задачи выполняющиеся более 60 секунд просто обрываются без какого-либо уведомления или сообщения об ошибке. И чтобы решить эту проблему, нужно воспользоваться парой недокументированных опций в конфигурационном файле. Ниже расскажу как установить более адекватный таймаут для выполнения задач в Laravel Horizon.

Laravel Horizon: ошибка 419 Authentication Timeout

Laravel Horizon — новомодная админка для работы с Redis в качестве системы очередей сообщений. Однако, нельзя просто так взять и начать с ней работать. Одна из частых проблем возникающих после установки: часть данных не подгружается через ajax-запросы, а в консоли разработчика появляются ошибки ответа 419.

Как в CentOs (Linux) заархивировать директорию

Работа с архивами — практически ежедневная задача при работе под любой операционной системой. В CentOS и других Linux-системах это создать архив удобнее всего с помощью команды: tar -cvzf folder.tar.gz folder В процессе исполнения будет выводиться лог с обработанными файлами, что весьма удобно для отслеживания процесса архивации. Извлечение файлов можно произвести […]

Как в PHP получить имя класса без неймспейса

Если вы любите баловаться с наследованием классов, то рано или поздно сталкиваетесь с задачей когда нужно узнать имя класса в контексте которого выполняется тот или иной код. Однако, стандартные методы по типу использования магической константы __CLASS__ или get_class($this) возвращают имя класса с его полным неймспейсом. Т.е. вы хотите получить LockHandler, но […]

Как на PHP перебрать все комбинации значений нескольких массивов

Достаточно интересная и не самая редкая задача. Допустим, есть несколько массивов с разными значениями, например: массив городов, возрастов, полов и т.п. Нужно вызвать некую функцию передав ей в качестве аргументов все возможные комбинации значений городов + возрастов + полов. Фактически это задача циклической итерации всех значений всех массивов. Неискушённый программист […]

Удивительные трюки с foreach в PHP

С версии PHP 5.5 появилась очень интересная фича: распаковка вложенных массивов с помощью list(). Дословно на русском описание этой фичи звучит как возможность обхода массива массивов с распаковкой вложенного массива в переменные цикла, передав list() в качестве значения. Что всё это значит? Оказывается больше не нужно писать так: foreach($users as $user) […]

Как в Nginx запретить отвечать на любой домен

У веб-сервера Nginx есть один фатальный недостаток — он пытается ответить на любой входящий запрос. Причём он отвечает даже на те запросы, в host-заголовке которых указан домен, который не был сконфигурирован! В этом случае Nginx выбирает первую попавшуюся секцию server и отдаёт ей запрос, даже если внутри этой секции значения […]