Квест → Как хакнуть форму
Прошли: 77
Для тех, кто пропустил: 24 ноября вышла новая мажорная версия Flysystem. Новая версия позволяет порвать с прошлым ради будущего, что я и сделал.
Для создания второй версии Flysystem я начал с чистого листа. Многие основные элементы дизайна библиотеки были почищены и улучшены. API уменьшен, сохраняя при этом свой прежний функционал. Обработка ошибок теперь основана только на исключениях, а листинг директорий теперь используют генераторами. Несмотря на то, что изменений много, эта версия Flysystem верна своим корням. Давайте погрузимся в детали!
Laravel Eloquent State Machines - это пакет Андре Сантибаньеса(Andrés Santibáñez), который упрощает переход состояний Eloquent-моделей:
В эти выходные я начал работать над новым пакетом для @laravelphp, реализующий управоение конечными автоматами для моделей Eloquent. Было прикольно и я многому научился в процессе.
Я только что тегнул версию v1.0.0. Наслаждайтесь!
Отзывы приветствуются!
- Андрес Сантибаньес (@asantibanez) 7 декабря 2020 года
Вы заметили, что при создании API вы часто продолжаете писать один и тот же код снова и снова? Вы создаете контроллер для [назовите свою сущность здесь] с методами для составления списка, создания, отображения, обновления и удаления этой [сущности]. Затем вы создаете другой контроллер, и это происходит снова и снова. Затем вам нужно написать некоторые кастомные методы (endpoint'ы) только для поддержки обновления отношения или поля в сводной таблице. Звучит знакомо, не правда ли?
Laravel имеет мощную систему очередей, и когда вы используете очереди, вам нужно запускать обработчики. Как правило, в рабочей среде вы используете команду queue:work
для их запуска, но это долгоживущие процессы, которые хранят загруженное состояние приложения в памяти. Таким образом, это означает, что после того, как вы внесете какие-либо изменения в код, вам нужно будет перезапустить их, чтобы они использовали новый код.
Xdebug - это расширение PHP, которое помогает в отладке, трассировке, профилировании и предоставляет инструменты для покрытия кода, а также совершенствует PHP с помощью более информативных функций отладки. Xdebug - это де-факто PHP-расширение для пошаговой отладки PHP и продуманный инструмент для разработки на PHP.
Разработанная Derick Rethans (Дерик Ритенс), Xdebug 2 - это текущая стабильная версия. Пре-релиз Xdebug 3 вышел всего несколько дней назад, и в этой статье приводятся улучшения производительности в новой версии.
Всем привет! Я хотел бы рассмотреть некоторые концепции удаления в Laravel. Иногда нам может понадобиться спроектировать приложение так, чтобы в случае удаления пользователем данных, они не удалялись бы навсегда и все равно оставались в базе данных, но внешне не отображались. Laravel предоставил нам эту функцию "из коробки" под названием softDelete, поэтому я проиллюстрирую как удалить, просмотреть, восстановить и как навсегда удалить удаленные данные. Я назвал эту концепцию Корзиной (Recycle Bin).
Если вы предпочитаете видео, вы можете посмотреть видео на Youtube.
На днях я опробовал GitHub Actions. Это классный инструмент! Кратко: с его помощью можно запускать код за вас, например, запускать ваши процессы сборки, тесты и развертывания. Это просто файлы конфигурации, которые могут запускать все, что вам нужно. Существует целый маркетплейс Action'ов (действий), готовых работать на вас.
TLDR: перезапишите метод resolveRouteBinding
в вашей Eloquent-модели для жадной загрузки (eager loading) отношений, которые понадобится использовать.
С самой первой версии Symfony 2, фреймворк предоставлял набор удобных инструментов для создания функциональных тестов. Они используют компоненты BrowserKit и DomCrawler для имитации веб-браузера, которые имеют дружественный API для разработчиков.
Недавно в Твиттере быстро разгорелось небольшое обсуждение. Очевидно, PHP выполняет вызовы функций по-разному в зависимости от использования namespace
(пространства имен). При вызове функций в контексте пространства имен в PHP запускаются дополнительные действия, которые приводят к более медленному исполнению. В этой статье я расскажу, что происходит, и как можно ускорить работу приложения.
Изменений и улучшений много: посмотрите полный список изменений, если вам интересно прочитать все. В этой статье я выделю несколько ключевых моментов.
Мы пересмотрели почти все от протокола, используемого между Composer и packagist.org, до разрешения зависимостей, включая параллельную загрузку файлов с использованием curl и оптимизацию оценки ограничений. Это приводит к значительному улучшению как в скорости, так и в использовании памяти. Разница в производительности зависит от вашего варианта использования, поэтому, хоть я и видел отчеты об улучшениях более чем на 50% в некоторых проектах, назвать точную цифру не могу. Однако я уверен, если вы еще не пробовали Composer 2, то будете приятно удивлены.
В качестве дополнительного примечания к этому, require/remove
и частичные обновления теперь намного быстрее, потому что Composer будет загружать только метаданные изменяемых пакетов.
Время первоначального обновления + установки (новый проект, пустой кэш) занимает примерно на 60% меньше времени при использовании Composer 2 с включенным ext-curl
Ревью кода - это часть разработки программного обеспечения, которая подразумевает тестирование исходного кода для идентификации багов на ранней стадии. Процесс код-ревью обычно проводится перед слиянием с кодовой базой.
Эффективное ревью кода предотвращает попадание багов и ошибок в ваш проект путем улучшения качества кода на ранней стадии процесса разработки софта.
В этой статье мы объясним, что такое код-ревью и изучим популярные инструменты, которые помогают организациям с данным процессом.
Содержание
Насколько быстрее новый маршрутизатор Symfony в реальных приложениях?
Мы провели несколько тестов, чтобы выяснить это.
Несколько дней назад мы получили фантастические новости, что маршрутизатор в Symfony был значительно улучшен. Конечно, мы хотели увидеть как изменения влияют на наше приложение, поэтому мы решили протестировать его на наших собственных роутах.
Если вы пропустили эту новость, вы можете почитать официальный анонс.
Если вы хотите знать, как новый маршрутизатор работает, почитайте пост Nicolas Grekas, где он более подробно описывает новые изменения.
Практически каждый PHP-разработчик когда-нибудь парсил данные из интернета. Часто нам нужны какие-то данные, которые доступны только на каком-то сайте, и мы хотим вытащить эти данные и сохранить их где-нибудь. Это похоже на то, что мы открываем браузер, ходим по ссылкам и копируем данные, которые нам нужны. Но то же самое может быть автоматизировано с помощью скрипта. В этом статье, я покажу вам путь, как вы можете увеличить скорость вашего парсера путём отправки запросов асинхронно.
Асинхронное программирование сегодня достаточно востребовано. Особенно в веб-разработке, где скорость реагирования приложения играет огромную роль. Никто не хочет тратить свое время и ожидать подвисшее приложение, пока вы выполняете несколько запросов к базе, отправляете электронное письмо или запускаете другие потенциально длительные задачи. Пользователи хотят получать ответы на свои действия, и они хотят, чтобы эти ответы происходили мгновенно. Когда ваше приложение становится медленным, вы начнете терять своих клиентов. После того как пользователь сталкивается с подвисанием приложения, в большинстве случаев он или она просто закрывает его и никогда не возвращается. Когда интерфейс зависает, с точки зрения пользователя не ясно — то ли ваше приложение поломано, то ли оно выполняет какие-то длительные задачи и на них требуется некоторое время.
Работая со старым кодом, я часто сталкиваюсь с таким классом, который расширяет большой базовый абстрактный класс, а методы этого класса вызывают методы того большого базового абстрактного класса, который делает очень много вещей. Я сам писал такие классы и методы в прошлом. Век живи, век учись.
Одна из самых больших проблем с этим кодом заключается в том, что это довольно трудно тестировать. Методы из базового класса могут возвращать другие объекты, побочно затрагивают другие части кода (или вызывают сервисы), делают http-запросы...
Когда вы разрабатываете проект с открытым исходным кодом, считается хорошей практикой иметь высокое покрытие тестами, чтобы сообщество могло чувствовать себя в безопасности, используя ваш код в своих проектах. Существуют онлайн-сервисы, которые могут анализировать качество вашего кода и предоставляют отчёты и рекомендации. Одним из самых популярных является Code Climate. Этот сервис не запускает ваши тесты, но вы можете использовать один из инструментов непрерывной интеграции(CI) для их запуска, а затем отправлять его результат в Code Climate. В этой статье будет показано, как использовать Travis CI для запуска тестов и данные о покрытии тестами в CodeClimate.
В 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(), ]; });
Недавно я писал пост о реинкарнации популярного PHP-пакета для Slack, в котором рассказывалось о форке популярного пакета и возобновлении поддержки оного. Однако, в статье нет ни слова о том как его использовать. Кроме того, на русском языке нет ни слова об использовании этого пакета. Да и об отправке сообщений в Slack в целом практически нет информации. Я решил исправить эту ситуацию и рассказать о том как можно быстро реализовать на PHP простейшую отправку сообщений в Slack.
Сначала давайте взглянем в целом на реализацию отправки. Что бы мы могли отправить сообщение из PHP, нам необходимо сделать 3 небольших и простых пункта: