Заметки разработчика
Ir al canal en Telegram
Заметки о Frontend, Backend и немного DevOps. В основном о #PHP, #Laravel, #JavaScript, #HTML, #CSS, тестировании и настройке серверов. https://www.dev-notes.ru @snakenf
Mostrar más463
Suscriptores
Sin datos24 horas
-37 días
+130 días
Archivo de publicaciones
В Symfony 6.4 добавлено разрешение бейджей безопасности в профилировщике, более безопасные логи безопасности и возможность раздельного определения нескольких паттернов в брандмауэрах безопасности.
https://www.dev-notes.ru/articles/symfony/new-in-symfony-6-4-security-improvements/
Если мы не знаем, как что-то работает, то ещё больше запутываемся, когда что-то ведёт себя не так, как ожидалось.
https://www.dev-notes.ru/articles/laravel/understanding-how-laravel-sessions-work/
Git, широко распространённая система контроля версий, позволяет разработчикам эффективно управлять и отслеживать изменения в кодовой базе. Одной из мощных, но иногда недопонимаемых команд является
git cherry-pick. В этой статье рассмотрим git cherry-pick, узнаем её назначение, использование и приведём примеры, раскрывающие суть этой команды.
https://www.dev-notes.ru/articles/git/demystifying-git-cherry-pick/На данный момент вы, скорее всего, уже знакомы с большинством методов работы с массивами, особенно с методами map(), filter() и reduce(). Однако вы, вероятно, не знали, что некоторые вещи, которые вы первоначально делали с помощью методов map() и filter(), можно также сделать с помощью метода reduce(). Мы можем возвращать из метода reduce() массивы и даже объекты, а также использовать его в качестве счётчика, в зависимости от того, для какой задачи он нужен. Не теряя времени, давайте рассмотрим некоторые из этих сценариев, в которых может пригодиться метод reduce().
https://www.dev-notes.ru/articles/javascript/returning-arrays-and-objects-from-the-reduce-method/
[Совет #62] Поисковые системы любят просматривать все ваши файлы, поэтому будьте внимательны к тому, что вы оставляете на видном месте.
https://www.dev-notes.ru/articles/laravel/security-tip-protect-your-env-file/
В Symfony 6.4 добавлено 12 новых интеграций со сторонними сервисами в компоненты
Mailer, Translation, Notifier, Webhook и RemoteEvent.
https://www.dev-notes.ru/articles/symfony/new-in-symfony-6-4-mailer-translation-notifier-webhook-and-remoteevent-integrations/DatePoint является полноценной заменой классов даты/времени PHP, предоставляющей множество утилит, полную интеграцию с компонентом Clock и улучшенную обработку ошибок.
https://www.dev-notes.ru/articles/symfony/datepoint-a-new-immutable-date-time-class-for-symfony-6-4/В Symfony 6.4 вводится новый атрибут
AutowireLocator, позволяющий определять локаторы сервисов с помощью PHP атрибутов, а не конфигурационных файлов.
Иногда сервисам требуется доступ к нескольким другим сервисам без уверенности в том, что все они действительно будут использоваться. Инъекция всех сервисов может снизить производительность (поскольку Symfony будет инстанцировать все сервисы, даже неиспользуемые), поэтому инъекция всего контейнера в приложениях Symfony категорически не рекомендуется.
Лучшим решением в таких случаях является использование подписчиков и локаторов сервисов. Локатор сервиса — это контейнер пользовательских сервисов, включающий только те сервисы, которые вы выбрали.
В Symfony 6.4 мы усовершенствовали локаторы сервисов, теперь их можно определять не через конфигурационные файлы, а с помощью PHP атрибутов. Новый атрибут #[AutowireLocator] принимает в качестве первого аргумента один идентификатор сервиса или массив идентификаторов сервисов:
use App\CommandHandler\BarHandler;
use App\CommandHandler\FooHandler;
use Psr\Container\ContainerInterface;
use Symfony\Component\DependencyInjection\Attribute\AutowireLocator;
class SomeService
{
public function __construct(
#[AutowireLocator([FooHandler::class, BarHandler::class])]
private ContainerInterface $handlers,
) {
}
public function someMethod(): void
{
$fooService = $this->handlers->get(FooHandler::class);
}
}
Вы также можете определить псевдонимы для этих служб и даже включить дополнительные службы, добавив к классу службы символ ?:
use App\CommandHandler\BarHandler;
use App\CommandHandler\FooHandler;
use Psr\Container\ContainerInterface;
use Symfony\Component\DependencyInjection\Attribute\Autowire;
use Symfony\Component\DependencyInjection\Attribute\AutowireLocator;
use Symfony\Contracts\Service\Attribute\SubscribedService;
class SomeService
{
public function __construct(
#[AutowireLocator([
'foo' => FooHandler::class,
'bar' => new SubscribedService(type: 'string', attributes: new Autowire('%some.parameter%')),
'optionalBaz' => '?'.BazHandler::class,
])]
private ContainerInterface $handlers,
) {
}
public function someMethod(): void
{
$fooService = $this->handlers->get('foo');
if ($this->handlers->has('optionalBaz')) {
// ...
}
}
}
Ознакомьтесь с исходным кодом #[AutowireLocator], чтобы узнать о других его аргументах, таких как $indexAttribute, $defaultPriorityMethod, $exclude и т.д.
Если вы предпочитаете получать не локатор сервиса, а итератор, замените атрибут AutowireLocator на AutowireIterator.
https://www.dev-notes.ru/articles/symfony/new-in-symfony-6-4-autowirelocator-and-autowireiterator-attributes/В начале этого года в Chrome 112 появилась вложенность CSS, и теперь она есть во всех основных браузерах.
Однако в синтаксис было внесено одно строгое и потенциально неожиданное требование, указанное первым в разделе "Недопустимые примеры вложения" статьи "Вложенность CSS". В этой статье мы расскажем, что изменилось в спецификации и в Chrome 120.
https://www.dev-notes.ru/articles/css/css-nesting-relaxed-syntax-update/
Я работаю с Eloquent уже более пяти лет, и пришло время поделиться своим опытом. Пристегните ремни, это будет хорошая поездка!
Eloquent — это хорошо отточенный инструмент, полюбившийся многим. Он позволяет с лёгкостью выполнять операции с базами данных, сохраняя при этом простой в использовании API. Реализуя паттерн Active Record (AR), описанный Fowler в книге PoEAA, он является одной из лучших реализаций AR, доступных на сегодня.
В этой статье я хотел бы рассказать несколько советов и рекомендаций, которые я узнал, экспериментируя с различными опциями. Например, задумывались ли вы когда-нибудь о том, чтобы тем или иным образом разделить свои жадные загрузки? Нет? Тогда я уверен, что вы узнаете как минимум кое-что новое, поэтому обязательно дочитайте до конца!
Как и все существующие инструменты, Eloquent имеет свой набор компромиссов. Как ответственные разработчики, мы должны всегда помнить о том, на что мы идём. Если вы хотите узнать больше об AR и философии её разработки, я очень рекомендую статью Shawn McCool.
https://www.dev-notes.ru/articles/eloquent/unorthodox-eloquent/
В Symfony 6.4 добавлены новые возможности в
Serializer, такие, как групповые атрибуты на основе классов, нормализация объектов Translatable и детализация ошибок декодирования JSON.
https://www.dev-notes.ru/articles/symfony/new-in-symfony-6-4-serializer-improvements/Laravel htmx — это пакет Maurizio Bonani, позволяющий работать с библиотекой htmx. Эта библиотека позволяет получать доступ к современным функциям браузера непосредственно из HTML, а не с помощью JavaScript:
htmx предоставляет доступ к AJAX, CSS Transitions, WebSockets и Server Sent Events непосредственно в HTML, используя атрибуты, что позволяет создавать современные пользовательские интерфейсы с простотой и мощью гипертекста. htmx имеет небольшой размер (~14k min.gz), не содержит зависимостей, расширяем, совместим с IE11 и сократил размер кодовой базы на 67% по сравнению с reacthttps://www.dev-notes.ru/articles/laravel/package-laravel-htmx/
На прошлой неделе я написал в твиттере о том, как выглядят контроллеры в моих приложениях и как я вообще к ним отношусь. Этот твит быстро стал вирусным и привлёк к себе много внимания, но, к сожалению, не по тем причинам. Поэтому в этой статье я хотел бы пролить свет на то, к чему я стремился, и объяснить, каким должен быть (UI) контроллер в целом.
https://www.dev-notes.ru/articles/laravel/controllers-and-their-true-purpose/
В этой статье мы поговорим о функции, используемой каждым Laravel разработчиком —
dd(). Я покажу различные творческие способы использования dd() в наших приложениях.
https://www.dev-notes.ru/articles/laravel/seven-tricks-with-dd/В Symfony 6.4 добавлены новые обработчики Messenger, позволяющие запускать процессы, команды и пинговать URL-адреса.
Компонент
Messenger построен на базе двух основных концепций: сообщений (это классы, содержащие данные) и обработчиков (это классы, вызываемые при отправке сообщения).
В Symfony 6.4 мы вводим несколько новых встроенных обработчиков, чтобы вы могли использовать эти возможности в своих приложениях без необходимости их реализации.
https://www.dev-notes.ru/articles/symfony/new-in-symfony-6-4-more-built-in-message-handlers/Выберите оптимизированный перенос текста, для красоты, а не для скорости.
В Chrome 117 можно использовать новую функцию переноса текста —
text-wrap: pretty из CSS Text Level 4.
https://www.dev-notes.ru/articles/css/text-wrap-pretty/В Chrome 118 появилась новая возможность медиа-запрос
prefers-reduced-transparency из CSS Media Queries 5. Непрозрачные интерфейсы могут вызывать головную боль или мешать зрительному восприятию при различных нарушениях зрения. Именно поэтому в Windows, macOS и iOS существуют системные настройки, позволяющие уменьшить или убрать прозрачность пользовательского интерфейса.
https://www.dev-notes.ru/articles/css/prefers-reduced-transparency/В Symfony 6.4 реализованы некоторые улучшения, связанные с локалями, такие, как установка локали при отображении содержимого электронной почты и доступ к списку включённых локалей из шаблонов.
https://www.dev-notes.ru/articles/symfony/new-in-symfony-6-4-locale-improvements/
Ошибка 503 Service Temporarily Unavailable — это распространённый код состояния HTTP, который указывает на недоступность веб-сервера. Её появление означает, что в данный момент сервер не может обработать запрос из-за временной перегрузки или технического обслуживания. В данной статье мы рассмотрим причины возникновения ошибки 503, типичные сценарии её появления и эффективные шаги по устранению этой проблемы в Nginx.
https://www.dev-notes.ru/articles/devops/how-to-fix-503-error-nginx/
В Symfony 6.4 добавлены новые тестовые утверждения, связанные с селекторами CSS, компонентом
HttpClient и темами электронной почты.
https://www.dev-notes.ru/articles/symfony/new-in-symfony-6-4-more-testing-assertions/