Система уведомлений в ресурсах Laravel
В предыдущей статье по работе с API ресурсами в Laravel была затронута тема изменения бизнес-потребностей в области формирования внешнего вида объекта ответа на запрос к API приложения.
В этой вводится новая бизнес-потребность под названием «нотификации». Их суть в том, чтобы вместе с ответом на запрос добавлять информацию о каких-либо действиях.
В предыдущей статье по работе с API ресурсами в Laravel была затронута тема изменения бизнес-потребностей в области формирования внешнего вида объекта ответа на запрос к API приложения.
В этой вводится новая бизнес-потребность под названием «нотификации». Их суть в том, чтобы вместе с ответом на запрос добавлять информацию о каких-либо действиях.
Telegram
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
Магический API Resource в Laravel
В Laravel есть удобные API ресурсы, с которыми легко и приятно работать в области трансформации данных для ответа на запрос. Но что делать когда возникает необходимость изменить их структуру в соответствии с бизнес-потребностями?…
В Laravel есть удобные API ресурсы, с которыми легко и приятно работать в области трансформации данных для ответа на запрос. Но что делать когда возникает необходимость изменить их структуру в соответствии с бизнес-потребностями?…
😁6👍3
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
👍3
Обновление сайтов Symfony на AssetMapper
Здесь описывается процесс перехода с использования Webpack Encore на AssetMapper в Symfony приложениях. Начиная с описания проблем с Webpack Encore, связанных с сложностью настройки и медленным развертыванием из-за необходимости сборки ассетов при каждом деплое, статья переходит к объяснению преимуществ AssetMapper и процесса их внедрения.
Первый шаг — установка AssetMapper с помощью Composer. Затем создается файл importmap.php, который указывает, какие ассеты используются в приложении, и заполняется с помощью команд importmap:require для каждой зависимости. После этого запускается команда importmap:install, которая загружает ассеты в директорию assets/vendor/. Энтрипоинты (точки входа) также определяются в файле importmap.php, а также производятся небольшие изменения в файлах ассетов и шаблонах.
Здесь также говорится о переходе с Sass на чистый CSS и упоминается использование Tailwind CSS. Изменения в CI/CD процессе также описываются, а в заключении авторы отмечают значительное упрощение и улучшение производительности после перехода на AssetMapper.
Здесь описывается процесс перехода с использования Webpack Encore на AssetMapper в Symfony приложениях. Начиная с описания проблем с Webpack Encore, связанных с сложностью настройки и медленным развертыванием из-за необходимости сборки ассетов при каждом деплое, статья переходит к объяснению преимуществ AssetMapper и процесса их внедрения.
Первый шаг — установка AssetMapper с помощью Composer. Затем создается файл importmap.php, который указывает, какие ассеты используются в приложении, и заполняется с помощью команд importmap:require для каждой зависимости. После этого запускается команда importmap:install, которая загружает ассеты в директорию assets/vendor/. Энтрипоинты (точки входа) также определяются в файле importmap.php, а также производятся небольшие изменения в файлах ассетов и шаблонах.
Здесь также говорится о переходе с Sass на чистый CSS и упоминается использование Tailwind CSS. Изменения в CI/CD процессе также описываются, а в заключении авторы отмечают значительное упрощение и улучшение производительности после перехода на AssetMapper.
Symfony
Upgrading Symfony Websites to AssetMapper (Symfony Blog)
We recently upgraded all Symfony websites from Webpack Encore to AssetMapper. This article explains the upgrade process in detail.
🔥5👍1
Forwarded from PHP jobs — вакансии по PHP, Symfony, Laravel
#дайджест #phpdevjob
Вакансии PHP разработчиков уровня Junior
▪️PHP-разработчик
Новомосковск. Экспресс РМС — спектр услуг для интернет-магазинов и компаний дистанционной торговли
Подробнее
▪️PHP-разработчик
Москва. Д-проджект — проектирование и разработкa интернет-систем
Подробнее
Вакансии PHP разработчиков уровня Middle
▪️PHP программист
Санкт-Петербург. СОФТПАРТ — разработкa веб-сервисов для сферы торговли автозапчастями
Подробнее
▪️PHP-разработчик
Удаленка. Офис в Екатеринбурге. Электронные платформы — EdTech стартап
Подробнее
Вакансии PHP разработчиков уровня Senior
▪️Веб-разработчик
Москва. Стройтерминал — разработка ПО
Подробнее
▪️PHP-разработчик
Удаленка. Офис в Санкт-Петербурге. ЭБС Лань — технологическая компания
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
Вакансии PHP разработчиков уровня Junior
▪️PHP-разработчик
Новомосковск. Экспресс РМС — спектр услуг для интернет-магазинов и компаний дистанционной торговли
Подробнее
▪️PHP-разработчик
Москва. Д-проджект — проектирование и разработкa интернет-систем
Подробнее
Вакансии PHP разработчиков уровня Middle
▪️PHP программист
Санкт-Петербург. СОФТПАРТ — разработкa веб-сервисов для сферы торговли автозапчастями
Подробнее
▪️PHP-разработчик
Удаленка. Офис в Екатеринбурге. Электронные платформы — EdTech стартап
Подробнее
Вакансии PHP разработчиков уровня Senior
▪️Веб-разработчик
Москва. Стройтерминал — разработка ПО
Подробнее
▪️PHP-разработчик
Удаленка. Офис в Санкт-Петербурге. ЭБС Лань — технологическая компания
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
novomoskovsk.hh.ru
Вакансия PHP-разработчик (junior) в г. НОВОМОСКОВСК (не удаленно) в Новомосковске, работа в компании Экспресс РМС (вакансия в архиве…
Зарплата: от 50000 ₽ за месяц. Новомосковск (Тульская область). Требуемый опыт: не требуется. Полная занятость. Дата публикации: 22.03.2024.
❤4
Какими площадками/соцсетями вы активно пользуетесь кроме Telegram'а?
Anonymous Poll
28%
инстаграм
6%
фейсбук
27%
вк
13%
линкед
8%
твиттер
7%
VC
37%
Хабр
10%
реддит
74%
ютуб
❤2
Реализация маршрутизации с использованием атрибутов PHP
Здесь представлен экспериментальный пример реализации маршрутизации с использованием атрибутов PHP. Проект управляется с помощью Composer для управления зависимостями.
В приложении определены два маршрута: CreateUser (для создания пользователя) и RetrieveUser (для получения информации о пользователе). Каждый маршрут представлен в виде отдельного класса, который расширяет базовый класс RouterBase.
Для управления маршрутами используется класс RouterHandler, который регистрирует маршруты из соответствующих файлов и обрабатывает запросы, соответственно подбирая соответствующий маршрут на основе URI и метода запроса.
Также представлен класс Route, который представляет собой атрибут, содержащий метод и конечную точку маршрута. Этот атрибут применяется к методам в классах маршрутов для определения их характеристик.
В итоге, для добавления нового маршрута в приложение необходимо создать новый класс маршрута с методом index() и применить к нему атрибут Route с указанием метода и конечной точки маршрута.
Общий подход позволяет легко добавлять и управлять маршрутами в приложении с помощью атрибутов, что делает код более чистым и модульным.
Здесь представлен экспериментальный пример реализации маршрутизации с использованием атрибутов PHP. Проект управляется с помощью Composer для управления зависимостями.
В приложении определены два маршрута: CreateUser (для создания пользователя) и RetrieveUser (для получения информации о пользователе). Каждый маршрут представлен в виде отдельного класса, который расширяет базовый класс RouterBase.
Для управления маршрутами используется класс RouterHandler, который регистрирует маршруты из соответствующих файлов и обрабатывает запросы, соответственно подбирая соответствующий маршрут на основе URI и метода запроса.
Также представлен класс Route, который представляет собой атрибут, содержащий метод и конечную точку маршрута. Этот атрибут применяется к методам в классах маршрутов для определения их характеристик.
В итоге, для добавления нового маршрута в приложение необходимо создать новый класс маршрута с методом index() и применить к нему атрибут Route с указанием метода и конечной точки маршрута.
Общий подход позволяет легко добавлять и управлять маршрутами в приложении с помощью атрибутов, что делает код более чистым и модульным.
DEV Community
Routing implementation using PHP attributes
Overview In this article I want to show an experimental example of routing implementation...
😁5
Forwarded from Библиотека собеса по PHP | вопросы с собеседований
This media is not supported in the widget
VIEW IN TELEGRAM
⚡5❤3🥱3👍1🥰1
Можно ли компоновать traits в trait?
В PHP, с версии 5.4 и выше, поддерживаются трейты (traits), которые позволяют компоновать поведение в классах без необходимости наследования. Трейты могут использоваться для компоновки поведения внутри других трейтов, что может быть полезным для структурирования и организации кода.
В приведенном примере трейт TraitC использует (use) два других трейта (TraitA и TraitB) и предоставляет дополнительный метод methodC. Класс Example затем использует трейт TraitC, что позволяет ему наследовать все методы из TraitA, TraitB и TraitC.
Таким образом, в PHP можно компоновать трейты внутри других трейтов для организации и переиспользования кода.
#вопросы_с_собеседований
В PHP, с версии 5.4 и выше, поддерживаются трейты (traits), которые позволяют компоновать поведение в классах без необходимости наследования. Трейты могут использоваться для компоновки поведения внутри других трейтов, что может быть полезным для структурирования и организации кода.
В приведенном примере трейт TraitC использует (use) два других трейта (TraitA и TraitB) и предоставляет дополнительный метод methodC. Класс Example затем использует трейт TraitC, что позволяет ему наследовать все методы из TraitA, TraitB и TraitC.
Таким образом, в PHP можно компоновать трейты внутри других трейтов для организации и переиспользования кода.
#вопросы_с_собеседований
👍8🤔7👏3
⚡️Proglib запускает каналы про нейросети
По каждому направлению отдельно! А именно:
⭐Библиотека нейрозвука — здесь все, связанное с транскрибацией, синтезом речи, ИИ-музыкой
⭐Библиотека нейротекста — классические ИИ-помощники вроде ChatGPT, Gemini, Bing
⭐Библиотека нейровидео — здесь пишем про нашумевшую Sora AI, а также про Runway ML, дипфейки и другие видеотехнологии
⭐Библиотека нейрокартинок — генерируем изображения и рассказываем про Midjourney, DALL-E, Stable Diffusion
⭐️Библиотека робототехники и беспилотников — наконец, тут мы рассказываем не столько про ИИ, сколько про роботов, беспилотные технологии и интернет вещей
И все это — максимально подробно: с пошаговыми инструкциями, промтами, инструментами и лайфхаками.
Подписывайтесь!
По каждому направлению отдельно! А именно:
⭐Библиотека нейрозвука — здесь все, связанное с транскрибацией, синтезом речи, ИИ-музыкой
⭐Библиотека нейротекста — классические ИИ-помощники вроде ChatGPT, Gemini, Bing
⭐Библиотека нейровидео — здесь пишем про нашумевшую Sora AI, а также про Runway ML, дипфейки и другие видеотехнологии
⭐Библиотека нейрокартинок — генерируем изображения и рассказываем про Midjourney, DALL-E, Stable Diffusion
⭐️Библиотека робототехники и беспилотников — наконец, тут мы рассказываем не столько про ИИ, сколько про роботов, беспилотные технологии и интернет вещей
И все это — максимально подробно: с пошаговыми инструкциями, промтами, инструментами и лайфхаками.
Подписывайтесь!
❤1👍1
Как измерить производительность в приложениях Laravel
Существует много различных инструментов и методов для измерения производительности приложений и API, начиная с внешних метрик, таких как скорость загрузки страницы и количество запросов, и заканчивая более глубокими аспектами, такими как время выполнения запросов к базе данных и использование памяти.
Здесь представлены инструменты такие как ab (Apache Benchmark) и jmeter для быстрой оценки производительности, а также более сложные инструменты, такие как Inspector и Laravel Telescope, которые предоставляют более подробную информацию о внутренних процессах приложения.
Также обсуждается OpenTelemetry для ручного профилирования кода и XDebug с qcachegrind для низкоуровневого анализа производительности. Он подчеркивает, что каждый инструмент имеет свои преимущества и ограничения, и что выбор инструмента зависит от конкретной ситуации и целей измерения производительности.
Существует много различных инструментов и методов для измерения производительности приложений и API, начиная с внешних метрик, таких как скорость загрузки страницы и количество запросов, и заканчивая более глубокими аспектами, такими как время выполнения запросов к базе данных и использование памяти.
Здесь представлены инструменты такие как ab (Apache Benchmark) и jmeter для быстрой оценки производительности, а также более сложные инструменты, такие как Inspector и Laravel Telescope, которые предоставляют более подробную информацию о внутренних процессах приложения.
Также обсуждается OpenTelemetry для ручного профилирования кода и XDebug с qcachegrind для низкоуровневого анализа производительности. Он подчеркивает, что каждый инструмент имеет свои преимущества и ограничения, и что выбор инструмента зависит от конкретной ситуации и целей измерения производительности.
martinjoo.dev
Blog for Laravel Artisans
I'm Martin Joo, a software engineer and content creator. This blog is about PHP, Laravel, Domain-Driven Design, Test-Driven Development, APIs.
❤1
Проблема с датами
В этом небольшом видео поднимается проблема временных интервалов в программировании
❓Вопрос: Мы имеем временной промежуток с 20 декабря по 25 декабря. Будет ли в этот интервал входить 25 декабря 10:00 утра?
❗Ответ: в PHP по стандарту нет!
Почему так вышло и как с этим работать смотрите здесь
В этом небольшом видео поднимается проблема временных интервалов в программировании
❓Вопрос: Мы имеем временной промежуток с 20 декабря по 25 декабря. Будет ли в этот интервал входить 25 декабря 10:00 утра?
❗Ответ: в PHP по стандарту нет!
Почему так вышло и как с этим работать смотрите здесь
YouTube
The problem with dates
PHP's DatePeriod class has an interesting edge case.
👍4
#хочу_спросить
Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
👍2
ngx-php
Встроенный языковой модуль PHP для веб-сервера Nginx. Согласно тестам, в настоящее время это самый быстрый способ запустить PHP — быстрее, чем Swoole, Roadrunner и Frankenphp.
Встроенный языковой модуль PHP для веб-сервера Nginx. Согласно тестам, в настоящее время это самый быстрый способ запустить PHP — быстрее, чем Swoole, Roadrunner и Frankenphp.
GitHub
GitHub - rryqszq4/ngx-php: ngx-php - Embedded php7 or php8 scripting language for nginx module. Mainline development version of…
ngx-php - Embedded php7 or php8 scripting language for nginx module. Mainline development version of the ngx-php. - rryqszq4/ngx-php
🤔18😁2
😎 Покупайте сейчас — учитесь, когда удобно!
До 1 апреля мы снизили цены на все наши курсы, чтобы вы могли сформировать свой карьерный трек и например подготовится и поступить в ШАД.
👀 Советуем обратить внимание на наши самые популярные курсы:
– Математика для Data Science
– Алгоритмы и структуры данных
🔥 Все цены на сайте уже включают скидку 35%, поэтому не упустите возможность зайти на курс по самой выгодной цене.
📚А если вы не уверенны, подойдет ли вам курс, то вы можете оставить заявку на вводные занятия. И наш менеджер пришлет вам всю необходимую информацию, где вы познакомитесь с преподавателями и форматом обучения — https://proglib.io/w/47905349
До 1 апреля мы снизили цены на все наши курсы, чтобы вы могли сформировать свой карьерный трек и например подготовится и поступить в ШАД.
👀 Советуем обратить внимание на наши самые популярные курсы:
– Математика для Data Science
– Алгоритмы и структуры данных
🔥 Все цены на сайте уже включают скидку 35%, поэтому не упустите возможность зайти на курс по самой выгодной цене.
📚А если вы не уверенны, подойдет ли вам курс, то вы можете оставить заявку на вводные занятия. И наш менеджер пришлет вам всю необходимую информацию, где вы познакомитесь с преподавателями и форматом обучения — https://proglib.io/w/47905349
❤1
Как интегрировать компонентную архитектуру в Symfony?
Здесь рассказывается о важности эффективного взаимодействия между front-end и back-end разработчиками в проектах, а также о том, как применение компонентной архитектуры может помочь в этом.
В начале подчеркивается, что неправильное понимание пользовательской истории (User Story) может привести к потере до трёх дней разработки из-за недопонимания. Также отмечается, что использование разных языков программирования может требовать создания API для облегчения коммуникации, что также является затратным процессом.
Основной акцент делается на причинах, по которым front-end разработчики могут быть неохотны работать с Twig (шаблонизатор для Symfony), что может привести к разрыву в коммуникации между front-end и back-end разработчиками.
Далее рассматривается компонентная архитектура, которая является фундаментальной для многих современных фронтенд-фреймворков, таких как Svelte, React и Vue.
Она определяется четырьмя основными принципами:
Композиция: Страница больше не является просто страницей, а скорее коллекцией маленьких, многократно используемых компонентов. Компоненты можно собирать для формирования страницы.
Независимость: Чтобы компонент можно было бесконечно использовать, он не должен зависеть от контекста. Он должен функционировать идентично, когда размещен на другой странице.
Свойства: Компонент должен оставаться независимым, но мы можем настраивать его в зависимости от контекста, используя свойства.
Состояния: Компонент может иметь несколько состояний, например, активное, загружающееся и отключенное. Состояния позволяют изменять внешний вид компонента в зависимости от его текущего состояния.
Также приводятся примеры того, как использовать архитектуру компонентов с помощью Symfony и шаблонизатора Twig. Она объясняет, как создавать компоненты, как использовать свойства для настройки компонентов и как комбинировать компоненты для создания более сложных интерфейсов. Также упоминаются способы управления состояниями компонентов с помощью библиотек Stimulus и LiveComponents.
Здесь рассказывается о важности эффективного взаимодействия между front-end и back-end разработчиками в проектах, а также о том, как применение компонентной архитектуры может помочь в этом.
В начале подчеркивается, что неправильное понимание пользовательской истории (User Story) может привести к потере до трёх дней разработки из-за недопонимания. Также отмечается, что использование разных языков программирования может требовать создания API для облегчения коммуникации, что также является затратным процессом.
Основной акцент делается на причинах, по которым front-end разработчики могут быть неохотны работать с Twig (шаблонизатор для Symfony), что может привести к разрыву в коммуникации между front-end и back-end разработчиками.
Далее рассматривается компонентная архитектура, которая является фундаментальной для многих современных фронтенд-фреймворков, таких как Svelte, React и Vue.
Она определяется четырьмя основными принципами:
Композиция: Страница больше не является просто страницей, а скорее коллекцией маленьких, многократно используемых компонентов. Компоненты можно собирать для формирования страницы.
Независимость: Чтобы компонент можно было бесконечно использовать, он не должен зависеть от контекста. Он должен функционировать идентично, когда размещен на другой странице.
Свойства: Компонент должен оставаться независимым, но мы можем настраивать его в зависимости от контекста, используя свойства.
Состояния: Компонент может иметь несколько состояний, например, активное, загружающееся и отключенное. Состояния позволяют изменять внешний вид компонента в зависимости от его текущего состояния.
Также приводятся примеры того, как использовать архитектуру компонентов с помощью Symfony и шаблонизатора Twig. Она объясняет, как создавать компоненты, как использовать свойства для настройки компонентов и как комбинировать компоненты для создания более сложных интерфейсов. Также упоминаются способы управления состояниями компонентов с помощью библиотек Stimulus и LiveComponents.
DEV Community
How to integrate Component Architecture into Symfony?
Miscommunication in our projects is costly. A single misunderstood User Story can result in 3 days of...
🔥4👍2❤1
💸👨💻 Тебе повезло, ты богатый айтишник
Как показали результаты нашего исследования, даже с профильным образованием найти первую работу в ИТ бывает нелегко. Большинству свитчеров первый оффер дается еще сложнее: огромный объем необходимых знаний и навыков нужно получить как можно быстрее.
Многие учатся (самостоятельно или на курсах) без отрыва от основной работы. Самые отчаянные вайтишники бросают работу и начинают учиться, живя на скромные сбережения. Герой этой истории, фронтендер Олег, начинал именно так. Под катом — его история.
👉 Читать статью
👉 Зеркало
Как показали результаты нашего исследования, даже с профильным образованием найти первую работу в ИТ бывает нелегко. Большинству свитчеров первый оффер дается еще сложнее: огромный объем необходимых знаний и навыков нужно получить как можно быстрее.
Многие учатся (самостоятельно или на курсах) без отрыва от основной работы. Самые отчаянные вайтишники бросают работу и начинают учиться, живя на скромные сбережения. Герой этой истории, фронтендер Олег, начинал именно так. Под катом — его история.
👉 Читать статью
👉 Зеркало
😁5🌚3
Forwarded from Библиотека шарписта | C#, F#, .NET, ASP.NET
💪 Что не так с MVP: как создать конкурентоспособный продукт
Традиционная концепция MVP нуждается в пересмотре — авторы предлагают альтернативный подход, основанный на тесном взаимодействии с целевой аудиторией и непрерывных итерациях для создания действительно ценного продукта.
👉 Читать статью
👉 Зеркало
Традиционная концепция MVP нуждается в пересмотре — авторы предлагают альтернативный подход, основанный на тесном взаимодействии с целевой аудиторией и непрерывных итерациях для создания действительно ценного продукта.
👉 Читать статью
👉 Зеркало
🔥4
Forwarded from Библиотека программиста | программирование, кодинг, разработка
📈 По просьбе подписчиков «Библиотеки программиста» мы провели опрос и выяснили, что у большинства айтишников зарплата в 2023 году выросла.
⚡️ Как выглядит доход среднего айтишника и какие факторы окажут влияние на динамику ИТ-зарплат в 2024 году — расскажем в статье на VC.
👉 Читать
P. S. Свои предложения для исследований пишите в комменты👇
⚡️ Как выглядит доход среднего айтишника и какие факторы окажут влияние на динамику ИТ-зарплат в 2024 году — расскажем в статье на VC.
👉 Читать
P. S. Свои предложения для исследований пишите в комменты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🌚2