Как сделать 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. Он будет подключен системой автоматически и имеет высший приоритет при исполнении.
(далее…)