Forwarded from Библиотека программиста | программирование, кодинг, разработка
🤖 Итоги недели в мире ИИ и обзоры новых сервисов
Мы написали статью на VC, которая основана на очередном выпуске нашей рассылки про последние новости и тенденции в мире ИИ. Залетайте и читайте!
👇 Ниже — мини-подборка из статьи 👇
📰 Новости
▫️ OpenAI объявила о запуске долгожданного магазина кастомных чат-ботов.
▫️ В Пасадене (штат Калифорния) открывается первая закусочная CaliExpress by Flippy, полностью управляемая ИИ.
▫️ NVIDIA выпустила модель для распознавания речи Parakeet, которая по всем показателям превосходит OpenAI Whisper.
▫️ Использование ИИ в совместном научном проекте Microsoft и Тихоокеанской северо-западной национальной лаборатории в течение недели помогло определить новый элемент, который поможет снизить на 70% использование лития в батареях. Без ИИ такое исследование заняло бы по меньшей мере 20 лет.
▫️ Компания ByteDance выпустила новую модель MagicVideo-V2 для генерации видео.
🛠 Инструменты
◾️ Auto Wiki — генерирует вики-документацию для GitHub репозиториев.
◾️ Code to Flow — визуализирует, анализирует и объясняет код, написанный на всех популярных языках и фреймворках.
◾️ Concepto — платформа для создания прототипов веб-приложений.
◾️ Afforai — выполняет суммаризацию, перевод и поиск по множеству документов.
◾️ Corgea — исправляет уязвимые фрагменты кода.
◾️ Jan — опенсорсный оффлайновый чат-бот.
◾️ Plus AI — плагин для Google Slides: делает профессиональные презентации, персональные и командные дашборды, любые отчеты.
🤙 Сделай сам
🔸 WikiChat — опенсорсный инструмент для коррекции галлюцинаций с помощью информации из Википедии.
🔸 Подробная шпаргалка и советы по созданию продвинутых RAG.
🔸 OpenVoice — опенсорный инструмент для мгновенного клонирования голоса.
🎓 Туториалы
🔹 Туториал по работе с новым API Query Pipelines показывает примеры создания простых линейных цепочек и сложных ациклических графов из модулей LlamaIndex.
🔹 Туториал по объединению LLM с помощью mergekit детально разбирает 4 основных метода объединения моделей.
#чтопроисходит
Мы написали статью на VC, которая основана на очередном выпуске нашей рассылки про последние новости и тенденции в мире ИИ. Залетайте и читайте!
📰 Новости
▫️ OpenAI объявила о запуске долгожданного магазина кастомных чат-ботов.
▫️ В Пасадене (штат Калифорния) открывается первая закусочная CaliExpress by Flippy, полностью управляемая ИИ.
▫️ NVIDIA выпустила модель для распознавания речи Parakeet, которая по всем показателям превосходит OpenAI Whisper.
▫️ Использование ИИ в совместном научном проекте Microsoft и Тихоокеанской северо-западной национальной лаборатории в течение недели помогло определить новый элемент, который поможет снизить на 70% использование лития в батареях. Без ИИ такое исследование заняло бы по меньшей мере 20 лет.
▫️ Компания ByteDance выпустила новую модель MagicVideo-V2 для генерации видео.
🛠 Инструменты
◾️ Auto Wiki — генерирует вики-документацию для GitHub репозиториев.
◾️ Code to Flow — визуализирует, анализирует и объясняет код, написанный на всех популярных языках и фреймворках.
◾️ Concepto — платформа для создания прототипов веб-приложений.
◾️ Afforai — выполняет суммаризацию, перевод и поиск по множеству документов.
◾️ Corgea — исправляет уязвимые фрагменты кода.
◾️ Jan — опенсорсный оффлайновый чат-бот.
◾️ Plus AI — плагин для Google Slides: делает профессиональные презентации, персональные и командные дашборды, любые отчеты.
🤙 Сделай сам
🔸 WikiChat — опенсорсный инструмент для коррекции галлюцинаций с помощью информации из Википедии.
🔸 Подробная шпаргалка и советы по созданию продвинутых RAG.
🔸 OpenVoice — опенсорный инструмент для мгновенного клонирования голоса.
🎓 Туториалы
🔹 Туториал по работе с новым API Query Pipelines показывает примеры создания простых линейных цепочек и сложных ациклических графов из модулей LlamaIndex.
🔹 Туториал по объединению LLM с помощью mergekit детально разбирает 4 основных метода объединения моделей.
#чтопроисходит
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1🥰1
Headless eCommerce на Laravel: Погружение в модульную архитектуру
Рассказ о том, как поверх Laravel реализовать фреймворк для быстрой и гибкой разработки API продукта с модульной архитектурой.
Рассказ о том, как поверх Laravel реализовать фреймворк для быстрой и гибкой разработки API продукта с модульной архитектурой.
Хабр
Headless eCommerce на Laravel: Погружение в модульную архитектуру
Привет, Habr! Меня зовут Тальгат Хайруллов, я руководитель команды разработки в компании CS-Cart. В статье расскажу, как мы поверх Laravel реализовали фреймворк для быстрой и гибкой разработки API...
🥰3⚡2❤2🤔1
📝 Интеграция сторонних API с Http-фасадом в Laravel
В статье:
Подробное руководство по интеграции сторонних API в Laravel с использованием структуры пользовательских классов для запросов и клиентов. Упор на использовании фасада Http в Laravel для обеспечения последовательности, более простого тестирования и уменьшения зависимостей.
1️⃣Добавление конфигурации Google Books в Laravel:
🗝️ Хранение ключа API и URL в файле .env.
🛠️ Добавление конфигурации в файл config/services.php.
2️⃣Создание класса ApiRequest:
🚀 Класс для построения HTTP-запросов к API.
🛠️ Методы для установки HTTP-метода, URI, заголовков, параметров запроса и тела.
🌐 Статические методы для создания экземпляров ApiRequest для конкретных HTTP-методов.
3️⃣Создание абстрактного класса ApiClient:
🛠️ Абстрактный базовый класс для выполнения HTTP-запросов к API.
🚀 Предоставляет метод для отправки ApiRequest и методы для получения и авторизации базового запроса.
📘 Подклассы должны реализовать метод baseUrl для указания базового URL API.
4️⃣Реализация GoogleBooksApiClient:
🚀 Конкретная реализация базового класса ApiClient для API Google Books.
🛠️ Методы для получения базового URL и авторизации запроса для API Google Books.
5️⃣Создание действия для запроса книг по названию:
🚀 Класс действия (QueryBooksByTitle) для запроса книг по названию из API Google Books.
🌐 Использует GoogleBooksApiClient и ApiRequest для формирования и отправки запроса.
🔚 В конце представлен бонусный раздел по написанию тестов для классов ApiRequest, ApiClient и GoogleBooksApiClient с использованием Pest PHP, демонстрируя, как обеспечить правильную настройку и поведение этих классов.
В статье:
Подробное руководство по интеграции сторонних API в Laravel с использованием структуры пользовательских классов для запросов и клиентов. Упор на использовании фасада Http в Laravel для обеспечения последовательности, более простого тестирования и уменьшения зависимостей.
1️⃣Добавление конфигурации Google Books в Laravel:
🗝️ Хранение ключа API и URL в файле .env.
🛠️ Добавление конфигурации в файл config/services.php.
2️⃣Создание класса ApiRequest:
🚀 Класс для построения HTTP-запросов к API.
🛠️ Методы для установки HTTP-метода, URI, заголовков, параметров запроса и тела.
🌐 Статические методы для создания экземпляров ApiRequest для конкретных HTTP-методов.
3️⃣Создание абстрактного класса ApiClient:
🛠️ Абстрактный базовый класс для выполнения HTTP-запросов к API.
🚀 Предоставляет метод для отправки ApiRequest и методы для получения и авторизации базового запроса.
📘 Подклассы должны реализовать метод baseUrl для указания базового URL API.
4️⃣Реализация GoogleBooksApiClient:
🚀 Конкретная реализация базового класса ApiClient для API Google Books.
🛠️ Методы для получения базового URL и авторизации запроса для API Google Books.
5️⃣Создание действия для запроса книг по названию:
🚀 Класс действия (QueryBooksByTitle) для запроса книг по названию из API Google Books.
🌐 Использует GoogleBooksApiClient и ApiRequest для формирования и отправки запроса.
🔚 В конце представлен бонусный раздел по написанию тестов для классов ApiRequest, ApiClient и GoogleBooksApiClient с использованием Pest PHP, демонстрируя, как обеспечить правильную настройку и поведение этих классов.
DEV Community
Simplifying API Integration with Laravel's Http Facade
Building a reusable API request and client class I’ve been working a lot lately...
❤5
Forwarded from PHP jobs — вакансии по PHP, Symfony, Laravel
#дайджест #phpdevjob
Вакансии недели для джунов 👨🏻🏫
PHP Developer в Новые Технологии
Санкт-Петербург. Разработка, внедрение и сопровождение ПО.
Подробнее
Junior Backend разработчик в PROFFIT GO
Набережные Челны. Цифровая экосистема решений для управления автопарками.
Подробнее
Junior full-stack developer в SBX Group
Рязань. Разработка ПО.
Подробнее
PHP-программист в Intelsib
Новосибирск. Поисковое продвижение, контекстная реклама, поисковый аудит.
Подробнее
Junior Backend PHP разработчик в GILMARK
Москва. Интернет-маркетинговое агентство.
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
Вакансии недели для джунов 👨🏻🏫
PHP Developer в Новые Технологии
Санкт-Петербург. Разработка, внедрение и сопровождение ПО.
Подробнее
Junior Backend разработчик в PROFFIT GO
Набережные Челны. Цифровая экосистема решений для управления автопарками.
Подробнее
Junior full-stack developer в SBX Group
Рязань. Разработка ПО.
Подробнее
PHP-программист в Intelsib
Новосибирск. Поисковое продвижение, контекстная реклама, поисковый аудит.
Подробнее
Junior Backend PHP разработчик в GILMARK
Москва. Интернет-маркетинговое агентство.
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
spb.hh.ru
Вакансия PHP Developer (Junior/Middle) в Санкт-Петербурге, работа в компании Новые Технологии (вакансия в архиве c 10 февраля 2024)
Зарплата: от 80000 до 150000 ₽. Санкт-Петербург. Требуемый опыт: 1–3 года. Полная занятость. Дата публикации: 07.02.2024.
❤9👍1
Как вы внедряете обучение в свою жизнь? Поделитесь опытом
Anonymous Poll
42%
Еле втискиваю обучение в расписание
7%
Кроме учёбы у меня нет других занятий
13%
Приходится отказываться от хобби
26%
Никак, пока не получается
6%
Я не хочу больше учиться(
6%
Свой вариант (напишу в комментариях)
Загрузка файлов напрямую с клиента на S3, не затрагивая файлы вашего Laravel-приложения.
Здесь обсуждается традиционный подход к обработке загрузки файлов в веб-приложениях, особенно в PHP и Laravel, где файлы обрабатываются сервером перед сохранением в службе хранения, такой как Amazon S3.
🔄 Предлагается альтернативный метод: файлы не касаются веб-сервера, а загружаются с клиента в S3.
Альтернативный подход включает следующие шаги:
1. Пользователь выбирает файл для загрузки.
2. JavaScript-клиент отправляет метаданные файла на бэкэнд.
3. Бэкэнд проверяет размер файла и тип контента, генерирует подписанный URL для ожидающего файла и отправляет его клиенту.
4. Клиент загружает файл напрямую в S3, используя подписанный URL.
5. После загрузки клиент уведомляет бэкэнд, что файл успешно загружен.
6. Бэкэнд создает необходимые записи в базе данных, связанные с загруженным файлом.
💻 Предоставлены кодовые фрагменты, включая объект значения SignedUrl и класс для генерации URL в S3. Также демонстрируется, как интегрировать эту логику в контроллер Laravel для обработки загрузки файлов.
💾Бэкэнд дополнительно рассматривается с точки зрения проверки метаданных файла, создания соответствующих моделей Eloquent и перемещения файлов из временных в постоянные каталоги в S3.
Здесь обсуждается традиционный подход к обработке загрузки файлов в веб-приложениях, особенно в PHP и Laravel, где файлы обрабатываются сервером перед сохранением в службе хранения, такой как Amazon S3.
🔄 Предлагается альтернативный метод: файлы не касаются веб-сервера, а загружаются с клиента в S3.
Альтернативный подход включает следующие шаги:
1. Пользователь выбирает файл для загрузки.
2. JavaScript-клиент отправляет метаданные файла на бэкэнд.
3. Бэкэнд проверяет размер файла и тип контента, генерирует подписанный URL для ожидающего файла и отправляет его клиенту.
4. Клиент загружает файл напрямую в S3, используя подписанный URL.
5. После загрузки клиент уведомляет бэкэнд, что файл успешно загружен.
6. Бэкэнд создает необходимые записи в базе данных, связанные с загруженным файлом.
💻 Предоставлены кодовые фрагменты, включая объект значения SignedUrl и класс для генерации URL в S3. Также демонстрируется, как интегрировать эту логику в контроллер Laravel для обработки загрузки файлов.
💾Бэкэнд дополнительно рассматривается с точки зрения проверки метаданных файла, создания соответствующих моделей Eloquent и перемещения файлов из временных в постоянные каталоги в S3.
crnkovic.me
Uploading files directly from client to S3 without files ever touching your Laravel application - Josip Crnković
If your web application allows users to upload files, there are a few things to consider and be aware of before deploying file uploads to production...
👍10❤1
Symfony 7, выпущенный в конце ноября 2023 года, сопровождается новым экзаменом на сертификацию.
Экзамен, аналогичный Symfony 6, но адаптированный под практики Symfony 7, фокусируется на основных концепциях.
Онлайн-экзамен длится 90 минут и включает 75 вопросов по 15 темам. Экзамен предоставляет сертификацию на уровнях «продвинутый» и «эксперт» в зависимости от баллов.
Для получения подробной информации и приобретения ваучера посетите certification.symfony.com
Экзамен, аналогичный Symfony 6, но адаптированный под практики Symfony 7, фокусируется на основных концепциях.
Онлайн-экзамен длится 90 минут и включает 75 вопросов по 15 темам. Экзамен предоставляет сертификацию на уровнях «продвинутый» и «эксперт» в зависимости от баллов.
Для получения подробной информации и приобретения ваучера посетите certification.symfony.com
Symfony
Introducing the Symfony 7 Certification (Symfony Blog)
The certification exam for the new Symfony 7 version is now available. Purchase your voucher today to become one of the first Symfony 7 Certified developers.
🥰5👍3🎉3❤1
MemSess — очередной сервер для работы с сессиями
В этой статье будет рассмотрен самописный сервер для работы с сессиями и пример работы с ним на PHP.
В этой статье будет рассмотрен самописный сервер для работы с сессиями и пример работы с ним на PHP.
Хабр
MemSess — очередной сервер для работы с сессиями
Пролог Всем привет. Не знал, как начать рассказ, поэтому в качестве пролога решил написать мини-интервью с самим с собой (наверное, это уже шизофрения), где кратко познакомлю вас с тем, что я написал,...
❤2🎉2😁1
Сон — это важно. А какими лайфхаками для глубокого сна вы пользуетесь?
Anonymous Poll
23%
Ложусь спать и просыпаюсь в одно и то же время
6%
Убираю телефон подальше, чтобы не достать
19%
Засыпаю в проветренной, прохладной и темной комнате
14%
Час-два смотрю мемы перед сном
8%
Ложусь рано и встаю рано
35%
Просто сплю 7-8 часов
4%
Гуляю на свежем воздухе перед сном
23%
А что вообще такое глубокий сон?
27%
Никакие, у меня проблемы со сном
4%
Свой вариант (напишу в комментариях)
Еще один #дайджест новостей по PHP за неделю:
🔎Выпущены PHP 8.3.2 и PHP 8.2.15! — это баг-фикс релиз
🔎Выпущена версия CakePHP 4.5.3. — Улучшения включают в себя: исправлена ошибка рендеринга страниц разработчиков в PHP 8.3, матрица CI теперь включает PHP 8.3, улучшено сообщение об ошибке ограничения EventFiredWith и многое другое.
🔎Программа раннего доступа PhpStorm 2024.1 уже открыта
🔎Бесплатные и льготные лицензии для PhpStorm: кто имеет право? — Для PHP-разработчиков, которым нужен расширенный опыт программирования, PhpStorm от JetBrains предлагает ряд льготных и бесплатных версий.
🔎Вышел Filament v3.2
🔎Неделя Symfony #890 (15–21 января 2024 г.) — Из-за онлайн-конференции деятельность по разработке была менее интенсивной, чем обычно, и в основном была сосредоточена на исправлении ошибок в стабильных версиях Symfony.
🔎Выпущены PHP 8.3.2 и PHP 8.2.15! — это баг-фикс релиз
🔎Выпущена версия CakePHP 4.5.3. — Улучшения включают в себя: исправлена ошибка рендеринга страниц разработчиков в PHP 8.3, матрица CI теперь включает PHP 8.3, улучшено сообщение об ошибке ограничения EventFiredWith и многое другое.
🔎Программа раннего доступа PhpStorm 2024.1 уже открыта
🔎Бесплатные и льготные лицензии для PhpStorm: кто имеет право? — Для PHP-разработчиков, которым нужен расширенный опыт программирования, PhpStorm от JetBrains предлагает ряд льготных и бесплатных версий.
🔎Вышел Filament v3.2
🔎Неделя Symfony #890 (15–21 января 2024 г.) — Из-за онлайн-конференции деятельность по разработке была менее интенсивной, чем обычно, и в основном была сосредоточена на исправлении ошибок в стабильных версиях Symfony.
👍3❤2
Laravel под капотом — Фасады
Статья предоставляет подробное руководство по системе фасадов в Laravel, фокусируясь на ее работе под капотом. Начинается с изучения базового примера в приложении Laravel, анализируя код в файле web.php и обнаружив, что у класса Route нет метода get(), возникает вопрос о том, как работает маршрутизатор Laravel.
Исследование приводит к классу Facade, который выступает в роли родительского класса для фасадов в Laravel. Ключевым методом здесь является __callStatic(), магическим методом, вызываемым при вызове неопределенного статического метода на фасаде. Этот метод динамически разрешает экземпляр фасада, вызывая resolveFacadeInstance(), который, в свою очередь, использует метод getFacadeRoot() для получения фактического экземпляра класса.
Метод getFacadeRoot() полагается на метод getFacadeAccessor() в дочернем классе фасада (в данном случае Route), который возвращает строку, представляющую ключ для разрешения экземпляра класса из контейнера приложения. Контейнер приложения устанавливается во время процесса старта, где ключевую роль играет класс Kernel Laravel.
Затем объясняется, как создать пользовательский фасад, привязав класс к контейнеру приложения и создавая класс фасада, указывающий соответствующую строку в getFacadeAccessor(). Процесс иллюстрируется с использованием класса HelloWorld.
Кроме того, представляется концепция фасадов в реальном времени, позволяющая использовать фасады без явного их создания. Это достигается добавлением префикса Facades к пространству имен контроллеров, что вызывает динамическое создание фасада в процессе старта приложения.
Статья предоставляет подробное руководство по системе фасадов в Laravel, фокусируясь на ее работе под капотом. Начинается с изучения базового примера в приложении Laravel, анализируя код в файле web.php и обнаружив, что у класса Route нет метода get(), возникает вопрос о том, как работает маршрутизатор Laravel.
Исследование приводит к классу Facade, который выступает в роли родительского класса для фасадов в Laravel. Ключевым методом здесь является __callStatic(), магическим методом, вызываемым при вызове неопределенного статического метода на фасаде. Этот метод динамически разрешает экземпляр фасада, вызывая resolveFacadeInstance(), который, в свою очередь, использует метод getFacadeRoot() для получения фактического экземпляра класса.
Метод getFacadeRoot() полагается на метод getFacadeAccessor() в дочернем классе фасада (в данном случае Route), который возвращает строку, представляющую ключ для разрешения экземпляра класса из контейнера приложения. Контейнер приложения устанавливается во время процесса старта, где ключевую роль играет класс Kernel Laravel.
Затем объясняется, как создать пользовательский фасад, привязав класс к контейнеру приложения и создавая класс фасада, указывающий соответствующую строку в getFacadeAccessor(). Процесс иллюстрируется с использованием класса HelloWorld.
Кроме того, представляется концепция фасадов в реальном времени, позволяющая использовать фасады без явного их создания. Это достигается добавлением префикса Facades к пространству имен контроллеров, что вызывает динамическое создание фасада в процессе старта приложения.
👍8🥱3❤2
Как защититься от «бестелесных» веб-шеллов
Здесь рассматривается развивающаяся природа кибератак, с акцентом на «бестелесные» веб-оболочки в качестве ключевого инструмента для удаленного управления веб-серверами. Эти веб-оболочки отличаются от традиционных тем, что не оставляют следов на сервере, что делает их обнаружение и анализ более сложными.
Рассматриваются различные типы веб-оболочек, включая те, которые создаются через заранее созданные файлы, эксплуатируя ошибки в веб-приложениях, внесение изменений в исходный код, скрытие в базах данных или модулях сервера, и, в частности, фокус на скрытии в памяти процесса веб-сервера. Различные методы внедрения PHP-кода в процесс, эксплуатации ошибок и обхода отключенных функций. Приведен кейс-стади по PHP-багу (#80663), иллюстрирующий развитие от ошибки использования после освобождения до потенциальной записи в произвольные адреса памяти.
Рассказывается о жизненном цикле PHP в сочетании с веб-сервером, подробно описывая функцию инициализации (RINIT) и потенциал ее эксплуатации для создания «оторванной» веб-оболочки. В статье рассматриваются конфигурации PHP в Apache и PHP-FPM, обсуждаются проблемы и преимущества каждой из них.
Обсуждается разработка кода оболочки, включая необходимость безопасного выполнения в потоках и использование функции управления ресурсами PHP. Представлены этапы эксплуатации для создания «оторванной» веб-оболочки, включая загрузку PHP-скрипта, поиск по памяти, цепочки ROP и внедрение обратных дверей в процессы веб-сервера.
Статья завершается акцентом на обнаружении «бестелесных» веб-оболочек с использованием инструментария EDR/SELinux. Методы обнаружения включают мониторинг внедрения кода в процессы, сканирование внедренного кода с использованием правил YARA и обнаружение после эксплуатации через аудит новых процессов, файловой активности и сетевой активности.
Здесь рассматривается развивающаяся природа кибератак, с акцентом на «бестелесные» веб-оболочки в качестве ключевого инструмента для удаленного управления веб-серверами. Эти веб-оболочки отличаются от традиционных тем, что не оставляют следов на сервере, что делает их обнаружение и анализ более сложными.
Рассматриваются различные типы веб-оболочек, включая те, которые создаются через заранее созданные файлы, эксплуатируя ошибки в веб-приложениях, внесение изменений в исходный код, скрытие в базах данных или модулях сервера, и, в частности, фокус на скрытии в памяти процесса веб-сервера. Различные методы внедрения PHP-кода в процесс, эксплуатации ошибок и обхода отключенных функций. Приведен кейс-стади по PHP-багу (#80663), иллюстрирующий развитие от ошибки использования после освобождения до потенциальной записи в произвольные адреса памяти.
Рассказывается о жизненном цикле PHP в сочетании с веб-сервером, подробно описывая функцию инициализации (RINIT) и потенциал ее эксплуатации для создания «оторванной» веб-оболочки. В статье рассматриваются конфигурации PHP в Apache и PHP-FPM, обсуждаются проблемы и преимущества каждой из них.
Обсуждается разработка кода оболочки, включая необходимость безопасного выполнения в потоках и использование функции управления ресурсами PHP. Представлены этапы эксплуатации для создания «оторванной» веб-оболочки, включая загрузку PHP-скрипта, поиск по памяти, цепочки ROP и внедрение обратных дверей в процессы веб-сервера.
Статья завершается акцентом на обнаружении «бестелесных» веб-оболочек с использованием инструментария EDR/SELinux. Методы обнаружения включают мониторинг внедрения кода в процессы, сканирование внедренного кода с использованием правил YARA и обнаружение после эксплуатации через аудит новых процессов, файловой активности и сетевой активности.
Хабр
Как защититься от «бестелесных» веб-шеллов
Введение В сегодняшней статье эксперты Сайбер ОК проведут вас за руку по лабиринту хакерских уловок и на пальцах объяснят, что такое "бестелесные" веб-шеллы и как с ними бороться. Сегодня мы наблюдаем...
👍6❤4👏2
Vertical Slice в PHP
Архитектура Vertical Slice организует код вокруг отдельных функций, улучшая модульность, гибкость, тестируемость и поддерживаемость. В Yii2 это можно реализовать с использованием встроенных действий Yii для более детального контроля.
Yii3 дополнительно облегчает этот подход, обеспечивая более тонкий уровень управления действиями. Структурирование по use case с помощью Vertical Slices улучшает архитектуру приложений на PHP, обеспечивая модульность, гибкость и поддерживаемость.
Архитектура Vertical Slice организует код вокруг отдельных функций, улучшая модульность, гибкость, тестируемость и поддерживаемость. В Yii2 это можно реализовать с использованием встроенных действий Yii для более детального контроля.
Yii3 дополнительно облегчает этот подход, обеспечивая более тонкий уровень управления действиями. Структурирование по use case с помощью Vertical Slices улучшает архитектуру приложений на PHP, обеспечивая модульность, гибкость и поддерживаемость.
blog.yii.lat
Vertical Slice Architecture in PHP.
Post by wilmer arambula
👍6❤1
Forwarded from Библиотека собеса по PHP | вопросы с собеседований
Как в общих чертах работает opcache?
OPcache (Opcode Cache) — это расширение для интерпретатора PHP, предназначенное для улучшения производительности выполнения PHP-скриптов. Его основная задача — кешировать промежуточный байт-код PHP (опкоды), чтобы уменьшить время компиляции и повторно использовать уже скомпилированный код при последующих запросах.
В общих чертах работа OPcache выглядит следующим образом:
Компиляция кода: Когда PHP-скрипт выполняется, он сначала компилируется в промежуточный байт-код (опкоды). Этот этап требуется при каждом запросе, если код не был изменен.
Кеширование: После компиляции кода OPcache сохраняет скомпилированный байт-код в памяти. Это позволяет избежать повторной компиляции при следующих запросах к тому же скрипту.
Повторное использование: В следующих запросах, если код скрипта не изменился, OPcache использует закешированный байт-код, обеспечивая более быстрое выполнение скрипта.
Инвалидация кеша: OPcache отслеживает изменения в PHP-файлах. Если файл изменяется, OPcache инвалидирует свой кеш для этого файла, чтобы обеспечить актуальность данных.
Преимущества использования OPcache включают улучшение производительности PHP-приложений за счет уменьшения времени компиляции и ускорения выполнения кода. Однако, следует отметить, что OPcache не является инструментом для улучшения самого кода; он просто устраняет необходимость повторной компиляции кода при каждом запросе.
OPcache (Opcode Cache) — это расширение для интерпретатора PHP, предназначенное для улучшения производительности выполнения PHP-скриптов. Его основная задача — кешировать промежуточный байт-код PHP (опкоды), чтобы уменьшить время компиляции и повторно использовать уже скомпилированный код при последующих запросах.
В общих чертах работа OPcache выглядит следующим образом:
Компиляция кода: Когда PHP-скрипт выполняется, он сначала компилируется в промежуточный байт-код (опкоды). Этот этап требуется при каждом запросе, если код не был изменен.
Кеширование: После компиляции кода OPcache сохраняет скомпилированный байт-код в памяти. Это позволяет избежать повторной компиляции при следующих запросах к тому же скрипту.
Повторное использование: В следующих запросах, если код скрипта не изменился, OPcache использует закешированный байт-код, обеспечивая более быстрое выполнение скрипта.
Инвалидация кеша: OPcache отслеживает изменения в PHP-файлах. Если файл изменяется, OPcache инвалидирует свой кеш для этого файла, чтобы обеспечить актуальность данных.
Преимущества использования OPcache включают улучшение производительности PHP-приложений за счет уменьшения времени компиляции и ускорения выполнения кода. Однако, следует отметить, что OPcache не является инструментом для улучшения самого кода; он просто устраняет необходимость повторной компиляции кода при каждом запросе.
👍13🥱6❤2🎉2👏1
Forwarded from Библиотека девопса | DevOps, SRE, Sysadmin
💰⬆️ 10 факторов, влияющих на зарплату программиста
Узнайте 10 факторов, как превратиться из рядового программиста в высокооплачиваемого специалиста и научиться аргументированно запрашивать зарплату выше рынка.
Читать статью
#новость
Узнайте 10 факторов, как превратиться из рядового программиста в высокооплачиваемого специалиста и научиться аргументированно запрашивать зарплату выше рынка.
Читать статью
#новость
❤1👍1
По локоть в легаси: пошагово перезапускаем устаревший портал на PHP
Статья описывает проблемы, с которыми столкнулся владелец сайта Fishingsib.ru, старого ресурса о рыбной ловле, написанного на устаревшем PHP и фреймворке CakePHP 2. Сайт страдал от долгих сроков разработки и трудностей с наймом новых специалистов из-за устаревшего стека технологий. Предлагается два пути решения проблемы: полное переписывание сайта с нуля или постепенную модернизацию существующего кода.
Команда выбрала второй вариант и приступила к постепенной модернизации кодовой базы. Они начали с написания тестов для старого приложения на CakePHP 2, а затем постепенно обновляли PHP, внедряли Symfony компоненты и создавали новое приложение на базе Symfony параллельно с существующим. Чтобы обеспечить совместимость и плавный переход, были разработаны общие точки входа и функционал Middleware.
Каждый этап модернизации включал подробный план действий и использование инструментов, таких как Codeception для тестирования и Rector для автоматической замены устаревшего кода. Как результат, сайт был успешно обновлен, внедрены новые функции, и команда разработчиков теперь может работать с актуальными технологиями, такими как Symfony 6.
Статья описывает проблемы, с которыми столкнулся владелец сайта Fishingsib.ru, старого ресурса о рыбной ловле, написанного на устаревшем PHP и фреймворке CakePHP 2. Сайт страдал от долгих сроков разработки и трудностей с наймом новых специалистов из-за устаревшего стека технологий. Предлагается два пути решения проблемы: полное переписывание сайта с нуля или постепенную модернизацию существующего кода.
Команда выбрала второй вариант и приступила к постепенной модернизации кодовой базы. Они начали с написания тестов для старого приложения на CakePHP 2, а затем постепенно обновляли PHP, внедряли Symfony компоненты и создавали новое приложение на базе Symfony параллельно с существующим. Чтобы обеспечить совместимость и плавный переход, были разработаны общие точки входа и функционал Middleware.
Каждый этап модернизации включал подробный план действий и использование инструментов, таких как Codeception для тестирования и Rector для автоматической замены устаревшего кода. Как результат, сайт был успешно обновлен, внедрены новые функции, и команда разработчиков теперь может работать с актуальными технологиями, такими как Symfony 6.
Хабр
По локоть в легаси: пошагово перезапускаем устаревший портал на PHP
PHP — один из самых популярных языков веб-разработки уже около 20 лет, а самому языку скоро стукнет 30. За это время на нем написали огромное количество больших и маленьких проектов. Некоторые сайты,...
👍9❤3🔥3