Forwarded from Библиотека задач по PHP | тесты, код, задания
😁18👍7❤1
Laravel под капотом — немного о макросах
В Laravel разработчики часто сталкиваются с ситуацией, когда нужного метода для работы со строками или коллекциями не оказывается под рукой. Чтобы решить эту проблему, Laravel предлагает удобный инструмент — макросы. Макросы позволяют добавлять кастомные методы к существующим классам фреймворка, что делает его более гибким и расширяемым.
В Laravel разработчики часто сталкиваются с ситуацией, когда нужного метода для работы со строками или коллекциями не оказывается под рукой. Чтобы решить эту проблему, Laravel предлагает удобный инструмент — макросы. Макросы позволяют добавлять кастомные методы к существующим классам фреймворка, что делает его более гибким и расширяемым.
DEV Community
Laravel Under The Hood - A Little Bit of Macros
Hello 👋 How often have you wished for a method that doesn't exist on collections or string...
❤🔥4👍2⚡1
Применение статических анализаторов архитектуры на примере гексагональной архитектуры
Отсутствие четкой структурированной архитектуры проектов — не редкость в ИТ. Одни этим пренебрегают из-за маленького масштаба проекта, другие — из-за сжатых сроков разработки, третьи — из-за отсутствия экспертизы в этом вопросе. Вместе с тем, движение по этому пути — практически всегда история с «отложенными последствиями»: со временем такие проекты становится сложно поддерживать, масштабировать, администрировать и фиксить.
Здесь рассказывается, почему важно структурировано выстраивать архитектуру проектов, а также показано на примере, с помощью каких инструментов можно отслеживать соответствие архитектуры изначальным требованиям.
Отсутствие четкой структурированной архитектуры проектов — не редкость в ИТ. Одни этим пренебрегают из-за маленького масштаба проекта, другие — из-за сжатых сроков разработки, третьи — из-за отсутствия экспертизы в этом вопросе. Вместе с тем, движение по этому пути — практически всегда история с «отложенными последствиями»: со временем такие проекты становится сложно поддерживать, масштабировать, администрировать и фиксить.
Здесь рассказывается, почему важно структурировано выстраивать архитектуру проектов, а также показано на примере, с помощью каких инструментов можно отслеживать соответствие архитектуры изначальным требованиям.
Хабр
Применение статических анализаторов архитектуры на примере гексагональной архитектуры
Отсутствие четкой структурированной архитектуры проектов — не редкость в ИТ. Одни этим пренебрегают из-за маленького масштаба проекта, другие — из-за сжатых сроков разработки, третьи — из-за...
👍3🔥1👏1
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
👍2
PHP: Современная альтернатива для борьбы с усталостью от JavaScript
За последние годы PHP стал более современным, удобным и производительным. Для разработчиков, уставших от сложности JavaScript-экосистемы, PHP может предложить упрощённый и эффективный подход к разработке веб-приложений.
Проблемы JavaScript-экосистемы
JavaScript стал основой для создания интерактивных веб-приложений, но его экосистема осложнилась. Разработчики сталкиваются с избытком фреймворков (React, Angular, Vue), сложностью инструментов (Webpack, Babel) и частыми изменениями, приводящими к «усталости от JavaScript».
Эволюция PHP
Сегодня PHP значительно отличается от того, каким он был 10 лет назад. Его модернизация затронула основные аспекты разработки:
1. Современный синтаксис
PHP теперь поддерживает строгую типизацию, сокращённые функции (arrow functions) и возможности работы с несколькими типами (union types). Это делает код предсказуемым и понятным.
2. Высокая производительность
Выпуск версий PHP 7 и 8 принёс значительный рост скорости работы и снижение потребления памяти. Технологии вроде JIT-компиляции обеспечивают ещё большее ускорение.
3. Поддержка асинхронного программирования
Библиотеки ReactPHP и Amp позволяют использовать асинхронный подход. Это открыло возможности для создания реальных приложений в реальном времени, таких как чаты или онлайн-игры.
4. Современные фреймворки и инструменты
Laravel и Symfony предлагают удобные и надёжные решения для разработки. Composer упростил управление зависимостями, а инструменты вроде PHPUnit и PHPStan помогают поддерживать высокое качество кода.
5. Улучшенный опыт разработки
Нововведения, такие как оператор null coalescing (??) и конструкции вроде match, делают код чище и проще для поддержки. Ошибки теперь легче отлавливать благодаря улучшенной системе исключений.
Преимущества PHP перед JavaScript
Простота: Создание CRUD-приложений с помощью PHP проще, чем использование сложного стека JavaScript.
Стабильность: PHP сохраняет обратную совместимость, что минимизирует риск поломок кода.
Зрелость для веба: PHP идеально подходит для задач вроде управления контентом (WordPress, Drupal) и создания API.
Многие устаревшие стереотипы о PHP больше не актуальны. Сегодня язык предлагает современный инструментарий, активное сообщество и востребованность на рынке. Разработчики, готовые освоить новые возможности PHP, могут быстро адаптироваться и успешно применять его в работе.
Современный PHP — это не просто инструмент прошлого, а мощное решение для настоящего и будущего веб-разработки.
За последние годы PHP стал более современным, удобным и производительным. Для разработчиков, уставших от сложности JavaScript-экосистемы, PHP может предложить упрощённый и эффективный подход к разработке веб-приложений.
Проблемы JavaScript-экосистемы
JavaScript стал основой для создания интерактивных веб-приложений, но его экосистема осложнилась. Разработчики сталкиваются с избытком фреймворков (React, Angular, Vue), сложностью инструментов (Webpack, Babel) и частыми изменениями, приводящими к «усталости от JavaScript».
Эволюция PHP
Сегодня PHP значительно отличается от того, каким он был 10 лет назад. Его модернизация затронула основные аспекты разработки:
1. Современный синтаксис
PHP теперь поддерживает строгую типизацию, сокращённые функции (arrow functions) и возможности работы с несколькими типами (union types). Это делает код предсказуемым и понятным.
2. Высокая производительность
Выпуск версий PHP 7 и 8 принёс значительный рост скорости работы и снижение потребления памяти. Технологии вроде JIT-компиляции обеспечивают ещё большее ускорение.
3. Поддержка асинхронного программирования
Библиотеки ReactPHP и Amp позволяют использовать асинхронный подход. Это открыло возможности для создания реальных приложений в реальном времени, таких как чаты или онлайн-игры.
4. Современные фреймворки и инструменты
Laravel и Symfony предлагают удобные и надёжные решения для разработки. Composer упростил управление зависимостями, а инструменты вроде PHPUnit и PHPStan помогают поддерживать высокое качество кода.
5. Улучшенный опыт разработки
Нововведения, такие как оператор null coalescing (??) и конструкции вроде match, делают код чище и проще для поддержки. Ошибки теперь легче отлавливать благодаря улучшенной системе исключений.
Преимущества PHP перед JavaScript
Простота: Создание CRUD-приложений с помощью PHP проще, чем использование сложного стека JavaScript.
Стабильность: PHP сохраняет обратную совместимость, что минимизирует риск поломок кода.
Зрелость для веба: PHP идеально подходит для задач вроде управления контентом (WordPress, Drupal) и создания API.
Многие устаревшие стереотипы о PHP больше не актуальны. Сегодня язык предлагает современный инструментарий, активное сообщество и востребованность на рынке. Разработчики, готовые освоить новые возможности PHP, могут быстро адаптироваться и успешно применять его в работе.
Современный PHP — это не просто инструмент прошлого, а мощное решение для настоящего и будущего веб-разработки.
👍24😁6😢1🌚1
Forwarded from Библиотека собеса по PHP | вопросы с собеседований
Какие способы оптимизации производительности баз данных знаете?
Существует несколько основных способов оптимизации баз данных:
Индексирование: Убедитесь, что ваша база данных имеет правильные индексы для часто используемых запросов. Индексы позволяют ускорить поиск данных.
Оптимизация запросов: Напишите запросы таким образом, чтобы они были эффективными. Используйте инструкции JOIN, WHERE и GROUP BY там, где это необходимо, чтобы снизить объем возвращаемых данных.
Кэширование: Используйте кэширование результатов запросов там, где это возможно. Например, результаты запросов к базе данных могут быть кэшированы в Redis или Memcached.
Ограничение объема данных: Загружайте только те данные, которые действительно нужны. Используйте LIMIT и OFFSET при запросах, чтобы извлекать только необходимое количество записей.
Оптимизация структуры таблиц: Проведите анализ структуры таблиц и убедитесь, что она оптимально сбалансирована для ваших запросов. Иногда изменение типов данных, уменьшение размера полей или нормализация таблиц может улучшить производительность.
Использование транзакций: Используйте транзакции для группировки нескольких операций в одну единицу работы. Это помогает уменьшить накладные расходы на управление транзакциями и обеспечить целостность данных.
Масштабирование базы данных: При необходимости масштабируйте базу данных горизонтально или вертикально. Горизонтальное масштабирование (шардинг) позволяет распределить данные по нескольким серверам, а вертикальное масштабирование (разделение на таблицы) позволяет распределить данные по разным таблицам или базам данных.
Мониторинг и профилирование: Регулярно отслеживайте производительность запросов и операций базы данных с помощью инструментов мониторинга и профилирования. Это позволяет идентифицировать узкие места и проводить дальнейшую оптимизацию.
Существует несколько основных способов оптимизации баз данных:
Индексирование: Убедитесь, что ваша база данных имеет правильные индексы для часто используемых запросов. Индексы позволяют ускорить поиск данных.
Оптимизация запросов: Напишите запросы таким образом, чтобы они были эффективными. Используйте инструкции JOIN, WHERE и GROUP BY там, где это необходимо, чтобы снизить объем возвращаемых данных.
Кэширование: Используйте кэширование результатов запросов там, где это возможно. Например, результаты запросов к базе данных могут быть кэшированы в Redis или Memcached.
Ограничение объема данных: Загружайте только те данные, которые действительно нужны. Используйте LIMIT и OFFSET при запросах, чтобы извлекать только необходимое количество записей.
Оптимизация структуры таблиц: Проведите анализ структуры таблиц и убедитесь, что она оптимально сбалансирована для ваших запросов. Иногда изменение типов данных, уменьшение размера полей или нормализация таблиц может улучшить производительность.
Использование транзакций: Используйте транзакции для группировки нескольких операций в одну единицу работы. Это помогает уменьшить накладные расходы на управление транзакциями и обеспечить целостность данных.
Масштабирование базы данных: При необходимости масштабируйте базу данных горизонтально или вертикально. Горизонтальное масштабирование (шардинг) позволяет распределить данные по нескольким серверам, а вертикальное масштабирование (разделение на таблицы) позволяет распределить данные по разным таблицам или базам данных.
Мониторинг и профилирование: Регулярно отслеживайте производительность запросов и операций базы данных с помощью инструментов мониторинга и профилирования. Это позволяет идентифицировать узкие места и проводить дальнейшую оптимизацию.
👍8❤1
Какой подарок хотели бы на Новый Год?⬇️⬇️⬇️
Yii Mailer
Пакет предоставляет абстракцию для отправки электронной почты через интерфейсы mailer и message.
Фактическая отправка почты обеспечивается отдельными взаимозаменяемыми пакетами.
Пакет предоставляет абстракцию для отправки электронной почты через интерфейсы mailer и message.
Фактическая отправка почты обеспечивается отдельными взаимозаменяемыми пакетами.
GitHub
GitHub - yiisoft/mailer: Generic mailer
Generic mailer. Contribute to yiisoft/mailer development by creating an account on GitHub.
👏7🌚2❤1🔥1😁1
Реализация сценария использования DDD на PHP
Здесь рассматривается подход к реализации сценария использования (Use Case) в рамках Domain-Driven Design (DDD) на PHP. Примером служит класс TaxPersistUseCase, который используется для управления сохранением сущности налога. Подход демонстрирует использование интерфейсов и доменных классов для работы с данными, сохраняя четкое разделение компонентов и следуя принципам DDD.
Здесь рассматривается подход к реализации сценария использования (Use Case) в рамках Domain-Driven Design (DDD) на PHP. Примером служит класс TaxPersistUseCase, который используется для управления сохранением сущности налога. Подход демонстрирует использование интерфейсов и доменных классов для работы с данными, сохраняя четкое разделение компонентов и следуя принципам DDD.
DEV Community
Implementing a DDD Use Case in PHP
Implementing a DDD Use Case for in PHP This article explores a Domain-Driven Design (DDD)...
🌚8👍4
is_a() против Instanceof
is_a() и instanceof — это одна и та же функция: проверка принадлежности объекта к определенному классу. Однако выполняются они по-разному.
Использование оператора ::class безопасно в обоих случаях.
Использование имени является именем класса для instanceof, в то время как для is_a() оно является именем константы. Это может привести к путанице.
is_a() и instanceof — это одна и та же функция: проверка принадлежности объекта к определенному классу. Однако выполняются они по-разному.
Использование оператора ::class безопасно в обоих случаях.
Использование имени является именем класса для instanceof, в то время как для is_a() оно является именем константы. Это может привести к путанице.
😁5👍4
Как часто, по вашему мнению, следует менять место работы?
Ставьте реакции:
⚡ — раз в год
🔥 — раз в 2-3 года
❤️ — раз в 5-6 лет
🌚 — а можно менять работу?
Ставьте реакции:
⚡ — раз в год
🔥 — раз в 2-3 года
❤️ — раз в 5-6 лет
🌚 — а можно менять работу?
🔥113🌚94❤38⚡14🤩1
❗Вакансии «Библиотеки программиста» — ждем вас в команде!
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
job.proglib.io
Вакансии в медиа «Библиотека программиста»
Количество проектов в редакции постоянно растет, так что нам всегда нужны специалисты
❤2
Forwarded from Библиотека джависта | Java, Spring, Maven, Hibernate
💡 Как избавиться от WebSockets и сэкономить $1 млн в год: неожиданные решения для оптимизации
Как снизить расходы на инфраструктуру и повысить эффективность? Оказывается, отказ от WebSockets может сэкономить миллионы. Вместо привычного подхода можно использовать решения, которые не только проще, но и лучше подходят для определённых задач, как, например, асинхронные очереди или SSE.
Знаете ли вы, как выбрать стратегию, которая одновременно сократит затраты и улучшит масштабируемость? Разберитесь в тонкостях оптимизации и найдите способ выжать максимум из вашей системы. 🚀
🔗 Читать статью
🔗 Зеркало
Как снизить расходы на инфраструктуру и повысить эффективность? Оказывается, отказ от WebSockets может сэкономить миллионы. Вместо привычного подхода можно использовать решения, которые не только проще, но и лучше подходят для определённых задач, как, например, асинхронные очереди или SSE.
Знаете ли вы, как выбрать стратегию, которая одновременно сократит затраты и улучшит масштабируемость? Разберитесь в тонкостях оптимизации и найдите способ выжать максимум из вашей системы. 🚀
🔗 Читать статью
🔗 Зеркало
😁9👍3
Лучшая стратегия кэширования Redis в Laravel: Руководство по быстрому и эффективному кэшированию
Redis и Laravel — это сочетание, которое помогает значительно ускорить приложения. Redis, хранилище данных в памяти, идеально подходит для кэширования, особенно когда данные запрашиваются часто и требуют высокой скорости доступа.
Здесь рассмотрены основные стратегии кэширования в Laravel с использованием Redis, включая настройку, управление временем жизни данных и очистку кэша.
Зачем кэшировать с Redis?
Кэширование позволяет временно сохранять данные, что сокращает время, затрачиваемое на запросы к базе данных. Это ускоряет загрузку страниц, снижает нагрузку на сервер и улучшает пользовательский опыт.
Преимущества Redis для кэширования:
🔸Высокая скорость работы с данными.
🔸Поддержка различных структур данных (строки, списки, хэши и др.).
🔸Гибкое управление сроком хранения данных и их удалением.
Redis и Laravel — это сочетание, которое помогает значительно ускорить приложения. Redis, хранилище данных в памяти, идеально подходит для кэширования, особенно когда данные запрашиваются часто и требуют высокой скорости доступа.
Здесь рассмотрены основные стратегии кэширования в Laravel с использованием Redis, включая настройку, управление временем жизни данных и очистку кэша.
Зачем кэшировать с Redis?
Кэширование позволяет временно сохранять данные, что сокращает время, затрачиваемое на запросы к базе данных. Это ускоряет загрузку страниц, снижает нагрузку на сервер и улучшает пользовательский опыт.
Преимущества Redis для кэширования:
🔸Высокая скорость работы с данными.
🔸Поддержка различных структур данных (строки, списки, хэши и др.).
🔸Гибкое управление сроком хранения данных и их удалением.
DEV Community
Best Redis Caching Strategy in Laravel: A Guide to Fast and Efficient Caching
Laravel and Redis are a powerful combination for boosting application speed and performance. Redis,...
👍2🤔2❤1
Настраивать xdebug для первого запуска не нужно вообще! Как в Phpstorm запустить отладку за минуту и без браузера
Многие считают, что добиться успешного запуска отладки xdebug после его установки — тяжело и мучительно. Но на самом деле, сделать первый запуск можно менее чем за минуту, не делая настройки и даже не прикасаясь к конфигурационным файлам .ini (php.ini/xdebug.ini). Как это сделать? Об этом и пойдет речь в этой статье.
Многие считают, что добиться успешного запуска отладки xdebug после его установки — тяжело и мучительно. Но на самом деле, сделать первый запуск можно менее чем за минуту, не делая настройки и даже не прикасаясь к конфигурационным файлам .ini (php.ini/xdebug.ini). Как это сделать? Об этом и пойдет речь в этой статье.
Хабр
Настраивать xdebug для первого запуска не нужно вообще! Как в Phpstorm запустить отладку за минуту и без браузера
Многие считают, что добиться успешного запуска отладки xdebug после его установки - тяжело и мучительно. Но на самом деле, сделать первый запуск можно менее чем за минуту, не делая настройку и даже не...
👍6
Phiki
Это подсветка синтаксиса, написанная на PHP. Он использует грамматические файлы TextMate и темы Visual Studio Code для генерации кода с подсветкой синтаксиса для веб-страниц и терминалов.
Это подсветка синтаксиса, написанная на PHP. Он использует грамматические файлы TextMate и темы Visual Studio Code для генерации кода с подсветкой синтаксиса для веб-страниц и терминалов.
GitHub
GitHub - phikiphp/phiki: Syntax highlighting powered by TextMate grammars in PHP.
Syntax highlighting powered by TextMate grammars in PHP. - phikiphp/phiki
👍5