Трудовыебудни

Как сделать git fork из github в bitbucket

Довольно частая задача — сделать форк какой-либо библиотеки с github и разместить её в приватном репозитории в bitbucket, gitlab или ещё где. Чаще всего это нужно в тех ситуациях, когда нужно самостоятельно внести правки в исходную библиотеку, но по каким-то причинам в основной  публичный репозиторий это попасть не должно. Собственно, сперва нужно создать новый пустой реопзиторий, затем склонировать его себе:

git clone git@bitbucket.org:my/forked-repo.git
(далее…)

Статьи чтобы набрать классы

PHPOffice

Команда энтузиастов, под брендом PHPOffice ведёт разработку библиотек для чтения и генерации офисных файлов. На данный момент доступны библиотеки для следующих форматов:

  • Word (word2007, odt, pdf, rtf, html)
  • Excel (excel2007, excel5, csv, pdf, html)
  • Power point (powerpoint2007, odp, serialized)
  • Visio (msvision2007, msvisio2013)
  • Project (msprojectexchange, gantproject)
(далее…)

Статьи чтобы набрать классы

Ответ на «микрооптимизацию в PHP»

На прошлой неделе я прочитал пост, рекомендованный мне в PHP Weekly. Он назывался Микрооптимизация в PHP. Я повелся, ведь всегда стремлюсь быть лучшим PHP разработчиком. Пост начинается с общих рекомендаций, которые, по сути, являются даже не микро-, а микро-микрооптимизацией. Продолжая читать, я приходил к выводу, что описанное в тексте и вовсе имеет мало общего с оптимизацией. В итоге я могу сказать, что пост был написан безответственно — заявления автора не имели обоснований. (далее…)

Без рубрики

Ускоряем Composer

Пакетный менеджер Composer при выполнении команды install или update обращается к файлу composer.json и последовательно обрабатывает указанные в нём пакеты. Если пакетов много, то эта процедура займёт довольно продолжительное время. Проблему могло бы решить распараллеливание процессов. И как раз для решения данной задачи чуть больше года назад был создан плагин Prestissimo. Он позволяет ускорить загрузку пакетов на порядок. (далее…)

Трудовыебудни

Как быстро проверить работоспособность прокси

Как проверить прокси в консоли Linux curl --proxy "user:pass@host:port" https://google.com Такой способ сработает в любом Linux-дистрибутиве с установленной библиотекой Curl. Также этот вариант будет работать в MacOs и даже Windows в cygwin! Однако, может возникнуть ошибка: curl: (77) error setting certificate verify locations: CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none Если знаете как Read more

Трудовыебудни

Как в Guzzle получить финальную ссылку после редиректа

Ещё одна повседневная задача — узнать адрес ссылки на которую был совершён редирект после HTTP-запроса. Однако, при работе с библиотекой Guzzle делается это не очень очевидно. Во-первых, нужно разрешить клиенту совершать редиректы: 'allow_redirects' => [ 'max' => 5, 'strict' => true]. Во-вторых, нужно включить запись редиректов: 'allow_redirects' => [ 'track_redirects' => true ]. В третьи, нужно прокинуть анонимную функцию с замыканием, которая запишет значение «эффективного» URL в замкнутую переменную. Всё вместе выглядит так: (далее…)

Трудовыебудни

Как на PHP скопировать директорию со всеми файлами

Стандартная функция copy в PHP умеет копировать только файл. Для копирования директориии со всем содержимым можно воспользоваться одним из следующих трюков:

 shell_exec("cp -r {$src} {$dest}");
Однако, что если нужно как-то дополнительно обработать сами файлы? (далее…)

Трудовыебудни

Особенности работы функции imap_sort в PHP

imap_sort — одна из нескольких функций, с помощью которой можно получить список писем в почтовом ящике. Один из её параметров — criteria, не очевидно, но с помощью него можно задать вид сортировки:

  • SORTDATE — сортировать по дате
  • SORTARRIVAL — дата получения
  • SORTFROM — по первому адресу в поле From
  • SORTSUBJECT — по теме письма
  • SORTTO — по первому адресу в поле To
  • SORTCC — по первому адресу в поле cc
  • SORTSIZE — по размеру сообщения
(далее…)

Трудовыебудни

Ошибка Warning: imap_open(): Couldn’t open stream

Ещё одна отрицательная особенность стандартной библиотеки функций в PHP для работы с почтовыми серверами — отсутствие удобной и адекватной работы с ошибками. Например, если указан не правильный логин или пароль, то библиотека просто выкидывает ошибку уровня warning:

Warning: imap_open(): Couldn't open stream {imap.mail.ru:993/imap/ssl}
И думай что хочешь, то ли что-то с сетью, почтовым сервером или ещё что. Чтобы получить детализацию, нужно вызвать функцию imap_last_error() которая вернёт адекватное сообщение о возникшей ошибке, например:
Can not authenticate to IMAP server: [AUTHENTICATIONFAILED] Authentication failed. Please verify your account by goin
(далее…)

Трудовыебудни

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

apt-get install -y fail2ban
Для того, чтобы установленное программное обеспечение работало должным образом, вам необходимо внести поправки в конфигурационный файл. По умолчанию таковым является /etc/fail2ban/jail.conf.
Однако разработчики крайне не рекомендуют редактировать его напрямую, чтобы избежать осложнений при работе с сервером. Поэтому создайте локальную копию данного файла командой:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Далее вам нужно будет выполнять редактирование только /etc/fail2ban/jail.local. Он будет подключен системой автоматически и имеет высший приоритет при исполнении.
(далее…)