Php Profi New Posts http://phpprofi.ru/ Sat, 31 Oct 2020 22:08:13 GMT ru-RU Composer 2.0 уже доступен! http://phpprofi.ru/blogs/post/113 Thu, 29 Oct 2020 03:48:28 GMT buggybux 1/ Что нового?

Изменений и улучшений много: посмотрите полный список изменений, если вам интересно прочитать все. В этой статье я выделю несколько ключевых моментов.

Улучшения производительности

Мы пересмотрели почти все от протокола, используемого между Composer и packagist.org, до разрешения зависимостей, включая параллельную загрузку файлов с использованием curl и оптимизацию оценки ограничений. Это приводит к значительному улучшению как в скорости, так и в использовании памяти. Разница в производительности зависит от вашего варианта использования, поэтому, хоть я и видел отчеты об улучшениях более чем на 50% в некоторых проектах, назвать точную цифру не могу. Однако я уверен, если вы еще не пробовали Composer 2, то будете приятно удивлены.

В качестве дополнительного примечания к этому, require/remove и частичные обновления теперь намного быстрее, потому что Composer будет загружать только метаданные изменяемых пакетов.

Время первоначального обновления + установки (новый проект, пустой кэш) занимает примерно на 60% меньше времени при использовании Composer 2 с включенным ext-curl

]]>
12 лучших инструментов для ревью кода для разработчиков (2020) http://phpprofi.ru/blogs/post/108 Fri, 23 Oct 2020 19:28:00 GMT buggybux Ревью кода - это часть разработки программного обеспечения, которая подразумевает тестирование исходного кода для идентификации багов на ранней стадии. Процесс код-ревью обычно проводится перед слиянием с кодовой базой.

Эффективное ревью кода предотвращает попадание багов и ошибок в ваш проект путем улучшения качества кода на ранней стадии процесса разработки софта.

В этой статье мы объясним, что такое код-ревью и изучим популярные инструменты, которые помогают организациям с данным процессом.

Содержание

  1. Что такое процесс ревью кода?
  2. Почему код-ревью критичен?
  3. Как выполнить ревью кода?
  4. Почему Вам стоит использовать инструменты для код-ревью?
  5. Более детальный взгляд на 12 мощных инструментов для ревью кода
]]>
Тестируем маршрутизатор Symfony 4.1 http://phpprofi.ru/blogs/post/105 Thu, 15 Mar 2018 17:29:28 GMT alek13 Насколько быстрее новый маршрутизатор Symfony в реальных приложениях?

Мы провели несколько тестов, чтобы выяснить это.

Улучшенный маршрутизатор

Несколько дней назад мы получили фантастические новости, что маршрутизатор в Symfony был значительно улучшен. Конечно, мы хотели увидеть как изменения влияют на наше приложение, поэтому мы решили протестировать его на наших собственных роутах.

Если вы пропустили эту новость, вы можете почитать официальный анонс.

Если вы хотите знать, как новый маршрутизатор работает, почитайте пост Nicolas Grekas, где он более подробно описывает новые изменения.

Наши реалии

  • Версия PHP: 7.1.13
  • Статические маршруты: 285
  • Динамические маршруты: 350
]]>
Быстрый Web-парсинг с помощью ReactPHP http://phpprofi.ru/blogs/post/101 Mon, 19 Feb 2018 20:08:00 GMT alek13 logo

Практически каждый PHP-разработчик когда-нибудь парсил данные из интернета. Часто нам нужны какие-то данные, которые доступны только на каком-то сайте, и мы хотим вытащить эти данные и сохранить их где-нибудь. Это похоже на то, что мы открываем браузер, ходим по ссылкам и копируем данные, которые нам нужны. Но то же самое может быть автоматизировано с помощью скрипта. В этом статье, я покажу вам путь, как вы можете увеличить скорость вашего парсера путём отправки запросов асинхронно.

]]>
Асинхронный PHP: Зачем? http://phpprofi.ru/blogs/post/100 Thu, 15 Feb 2018 19:02:41 GMT alek13 Асинхронное программирование сегодня достаточно востребовано. Особенно в веб-разработке, где скорость реагирования приложения играет огромную роль. Никто не хочет тратить свое время и ожидать подвисшее приложение, пока вы выполняете несколько запросов к базе, отправляете электронное письмо или запускаете другие потенциально длительные задачи. Пользователи хотят получать ответы на свои действия, и они хотят, чтобы эти ответы происходили мгновенно. Когда ваше приложение становится медленным, вы начнете терять своих клиентов. После того как пользователь сталкивается с подвисанием приложения, в большинстве случаев он или она просто закрывает его и никогда не возвращается. Когда интерфейс зависает, с точки зрения пользователя не ясно — то ли ваше приложение поломано, то ли оно выполняет какие-то длительные задачи и на них требуется некоторое время.

]]>
Mockery: частичные двойники (mock'и) http://phpprofi.ru/blogs/post/99 Wed, 07 Feb 2018 20:52:53 GMT alek13 Работая со старым кодом, я часто сталкиваюсь с таким классом, который расширяет большой базовый абстрактный класс, а методы этого класса вызывают методы того большого базового абстрактного класса, который делает очень много вещей. Я сам писал такие классы и методы в прошлом. Век живи, век учись.

Одна из самых больших проблем с этим кодом заключается в том, что это довольно трудно тестировать. Методы из базового класса могут возвращать другие объекты, побочно затрагивают другие части кода (или вызывают сервисы), делают http-запросы...

]]>
Test Coverage: Интеграция CodeClimate и Travis CI http://phpprofi.ru/blogs/post/98 Wed, 07 Feb 2018 16:09:51 GMT alek13 Когда вы разрабатываете проект с открытым исходным кодом, считается хорошей практикой иметь высокое покрытие тестами, чтобы сообщество могло чувствовать себя в безопасности, используя ваш код в своих проектах. Существуют онлайн-сервисы, которые могут анализировать качество вашего кода и предоставляют отчёты и рекомендации. Одним из самых популярных является Code Climate. Этот сервис не запускает ваши тесты, но вы можете использовать один из инструментов непрерывной интеграции(CI) для их запуска, а затем отправлять его результат в Code Climate. В этой статье будет показано, как использовать Travis CI для запуска тестов и данные о покрытии тестами в CodeClimate.

logo

]]>
GroupBy по нескольким значениям в Laravel http://phpprofi.ru/blogs/post/97 Mon, 05 Feb 2018 13:17:38 GMT alek13 В Laravel начиная с версии 5.5.29 можно группировать коллекции по нескольким критериям. Давайте посмотрим, что это означает и как это работает.

Подготовка

Итак, эта статья о новой функциональности в фреймворке Laravel. Но прежде чем мы посмотрим как она работает сейчас, давайте посмотрим как она работала раньше. Метод groupBy является методом класса Collection. Для наших примеров я создам немного данных, с которыми мы будем работать. Students будет фабрикой состояний для передаваемого класса User.

// Default user factory which comes with Laravel
$factory->define(App\User::class, function (Faker $faker) {
    return [
        'name' => $faker->name,
        'email' => $faker->unique()->safeEmail,
        'password' => '$2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm', // secret
        'remember_token' => str_random(10),
    ];
});

// Our new students state
$factory->state(App\User::class, 'students', function (Faker $faker) {
    return [
        'skilllevel' => collect(['beginner', 'intermediate', 'professional'])->random(),
        'teacher' => collect(['Peter', 'Markus', 'Chris'])->random(),
    ];
});
]]>
Slack. Отправка простого сообщения. http://phpprofi.ru/blogs/post/96 Wed, 24 Jan 2018 17:49:50 GMT alek13 Недавно я писал пост о реинкарнации популярного PHP-пакета для Slack, в котором рассказывалось о форке популярного пакета и возобновлении поддержки оного. Однако, в статье нет ни слова о том как его использовать. Кроме того, на русском языке нет ни слова об использовании этого пакета. Да и об отправке сообщений в Slack в целом практически нет информации. Я решил исправить эту ситуацию и рассказать о том как можно быстро реализовать на PHP простейшую отправку сообщений в Slack.

Отправка Slack-сообщения на PHP

Сначала давайте взглянем в целом на реализацию отправки. Что бы мы могли отправить сообщение из PHP, нам необходимо сделать 3 небольших и простых пункта:

]]>
Качество кода: 'взбиваемость' (churn) и сложность (complexity). Как отслеживать легаси. http://phpprofi.ru/blogs/post/95 Mon, 22 Jan 2018 15:06:56 GMT alek13 Cложность кода (code complexity)

Сложность часто измеряется путем вычисления цикломатической сложности на единицу кода. Показатель можно рассчитать, принимая все ветви кода во внимание.

Сложность кода является показателем для нескольких вещей:

  • Насколько трудно понять кусок кода. Большое значение показателя говорит о многочисленном ветвлении в коде. При чтении кода, программист должен отслеживать все эти ветки, чтобы понять все различные пути, в которые может "зайти" приложение при исполнении.
  • Насколько трудно протестировать этот кусок кода. Большое значение показателя указывает на множество ветвей кода, и для того, чтобы полностью протестировать этот кусок кода, все эти ветви должны быть покрыты отдельно. ]]>