Forwarded from Библиотека джависта | Java, Spring, Maven, Hibernate
🗺️💼 Из Москвы в Дублин: опыт российского разработчика из Amazon
В этой статье я расскажу о культурных и профессиональных отличиях, с которыми мне пришлось столкнуться, переезжая из России в Латвию, а затем и в Ирландию. Надеюсь, мой опыт поможет вам понять, чего можно ожидать от такого серьезного шага.
Читать статью
В этой статье я расскажу о культурных и профессиональных отличиях, с которыми мне пришлось столкнуться, переезжая из России в Латвию, а затем и в Ирландию. Надеюсь, мой опыт поможет вам понять, чего можно ожидать от такого серьезного шага.
Читать статью
👍4😁3🎉2
Улучшите свои запросы в Laravel Eloquent с помощью Tappable Scopes
Статья об использовании «tappable scopes» в Laravel объясняет, как этот паттерн может упростить и абстрагировать сложные запросы. Вместо использования обычных методов областей запросов, автор предлагает использовать «tappable scopes» для более чистого и повторного использования кода.
Первоначально объясняется базовое использование «tappable scopes» на примере опубликованных записей и комментариев. Затем автор демонстрирует, как добавить параметры в «tappable scopes», что делает их более гибкими.
Наконец, представляется более сложный пример, где «tappable scope» используется для запроса последних опубликованных записей с автором и количеством комментариев. Это уменьшает сложность запроса и делает его легко настраиваемым для разных частей приложения.
Статья об использовании «tappable scopes» в Laravel объясняет, как этот паттерн может упростить и абстрагировать сложные запросы. Вместо использования обычных методов областей запросов, автор предлагает использовать «tappable scopes» для более чистого и повторного использования кода.
Первоначально объясняется базовое использование «tappable scopes» на примере опубликованных записей и комментариев. Затем автор демонстрирует, как добавить параметры в «tappable scopes», что делает их более гибкими.
Наконец, представляется более сложный пример, где «tappable scope» используется для запроса последних опубликованных записей с автором и количеством комментариев. Это уменьшает сложность запроса и делает его легко настраиваемым для разных частей приложения.
DEV Community
Elevate Your Laravel Eloquent Queries with Tappable Scopes
In this article, I want to go over how to use tappable scopes in Laravel. I’ve used similar patterns...
🥱10❤4🤔2👍1
💬 Куда вы предпочитаете обращаться за подсказками, если нужно сделать что-то новое?
❤️ — YouTube-туториалы
👍 — документация
#интерактив
❤️ — YouTube-туториалы
👍 — документация
#интерактив
👍117❤12
10 лучших фреймворков для тестирования на 2024 год
Это обширный обзор различных PHP-фреймворков для тестирования, их преимуществ и сферы применения. Подчеркивается важность выбора фреймворка на основе требований проекта и выделяет десять популярных PHP-фреймворков для тестирования, включая как популярные PHPUnit, Codeception, Selenium, так и менее популярные, но заслуживающие внимания.
Фреймворки оцениваются на основе таких факторов, как удобство использования, поддержка структуры кода, эффективность тестирования, избежание дублирования кода и анализ покрытия тестами.
Это обширный обзор различных PHP-фреймворков для тестирования, их преимуществ и сферы применения. Подчеркивается важность выбора фреймворка на основе требований проекта и выделяет десять популярных PHP-фреймворков для тестирования, включая как популярные PHPUnit, Codeception, Selenium, так и менее популярные, но заслуживающие внимания.
Фреймворки оцениваются на основе таких факторов, как удобство использования, поддержка структуры кода, эффективность тестирования, избежание дублирования кода и анализ покрытия тестами.
DEV Community
Top 10 PHP Testing Frameworks for 2024
A framework is a collection or set of tools and processes that work together to support testing and...
😁3👍1🔥1🥱1
Какова цель сервис провайдеров в Ларавеле?
В Laravel, сервис-провайдеры отвечают за загрузку различных аспектов приложения, таких как регистрация маршрутов, регистрация слушателей событий и регистрация миграций базы данных.
Сервис-провайдеры определяются в каталоге app/Providers и регистрируются в файле config/app.php.
Это пример сервис-провайдера, который регистрирует маршрут
#вопросы_с_собеседований
В Laravel, сервис-провайдеры отвечают за загрузку различных аспектов приложения, таких как регистрация маршрутов, регистрация слушателей событий и регистрация миграций базы данных.
Сервис-провайдеры определяются в каталоге app/Providers и регистрируются в файле config/app.php.
Это пример сервис-провайдера, который регистрирует маршрут
#вопросы_с_собеседований
🌚11👍7🥱3
Переосмысление моков: DIY подход против фреймворков на примере PHP и TypeScript
Здесь обсуждается выбор между использованием собственных моков и моков, созданных с помощью фреймворков при тестировании программного обеспечения. Моки необходимы для обеспечения надежности кода, но их неправильное использование может усложнить тестовые наборы.
Также рассматриваются различные типы тестовых двойников и обсуждаются преимущества и недостатки двух методов мокирования. Авторы рекомендуют использовать собственные моки для повышения устойчивости и простоты тестирования в долгосрочной перспективе.
Здесь обсуждается выбор между использованием собственных моков и моков, созданных с помощью фреймворков при тестировании программного обеспечения. Моки необходимы для обеспечения надежности кода, но их неправильное использование может усложнить тестовые наборы.
Также рассматриваются различные типы тестовых двойников и обсуждаются преимущества и недостатки двух методов мокирования. Авторы рекомендуют использовать собственные моки для повышения устойчивости и простоты тестирования в долгосрочной перспективе.
Kamil Ruczyński
Rethinking Mocking - DIY Approach vs. Frameworks on examples in PHP and Typescript
In the landscape of software testing, the choice between a do-it-yourself (DIY) approach to mocking or utilizing mocking frameworks is a pivotal decision for programmers. While mocking is indispensable for code reliability, its overuse or incorrect implementation…
❤5👍2🤔2🔥1
👩💻Функция Str::mask в Laravel может использоваться для замены конфиденциальной информации, например номера кредитной карты, на символы-заменители. Это позволяет сохранять безопасность конфиденциальных данных клиентов.
🔸Эта функция заменяет после 4 символов и оставляет последние 4 символа в строке на символы «*». Таким образом, конфиденциальная информация остается скрытой, но при этом сохраняется достаточно информации, чтобы использовать ее для нужных действий, например для проверки транзакций.
🔸Эта функция заменяет после 4 символов и оставляет последние 4 символа в строке на символы «*». Таким образом, конфиденциальная информация остается скрытой, но при этом сохраняется достаточно информации, чтобы использовать ее для нужных действий, например для проверки транзакций.
🔥16👍4❤1
#хочу_спросить
Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
❤🔥1
TransformersPHP
Инструментарий для PHP-разработчиков, позволяющий легко добавлять возможности машинного обучения в свои проекты. Пост-интро.
Инструментарий для PHP-разработчиков, позволяющий легко добавлять возможности машинного обучения в свои проекты. Пост-интро.
GitHub
GitHub - CodeWithKyrian/transformers-php: Transformers PHP is a toolkit for PHP developers to add machine learning magic to their…
Transformers PHP is a toolkit for PHP developers to add machine learning magic to their projects easily. - GitHub - CodeWithKyrian/transformers-php: Transformers PHP is a toolkit for PHP developer...
❤🔥5👍2
Forwarded from PHP jobs — вакансии по PHP, Symfony, Laravel
#дайджест #phpdevjob
Вакансии PHP разработчиков уровня Junior
▪️Разработчик PHP
Тюмень. Восток.Софт — разработка ПО
Подробнее
▪️PHP-программист
Удаленка. Офис в Барнауле. ИНЛАЙН — разработка и развитие интернет-сервисов в сфере B2B
Подробнее
Вакансии PHP разработчиков уровня Middle
▪️PHP-разработчик
Удаленка. Офис в Ульяновске. Дион Софт — разработка и развитие медицинской информационной системы
Подробнее
▪️PHP разработчик
Удаленка. Офис в Москве. Restaurant Guru — ресурс, в котором собраны лучшие заведения со всех частей света
Подробнее
Вакансии PHP разработчиков уровня Senior
▪️PHP-разработчик
Удаленка. Офис в Москве. АЙТИ.СПЕЙС — разработка, внедрение и сопровождение ПО
Подробнее
▪️Ведущий разработчик PHP
Удаленка. Офис в Москве. Dex — разработка мобильных приложений и web-сервисов
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
Вакансии PHP разработчиков уровня Junior
▪️Разработчик PHP
Тюмень. Восток.Софт — разработка ПО
Подробнее
▪️PHP-программист
Удаленка. Офис в Барнауле. ИНЛАЙН — разработка и развитие интернет-сервисов в сфере B2B
Подробнее
Вакансии PHP разработчиков уровня Middle
▪️PHP-разработчик
Удаленка. Офис в Ульяновске. Дион Софт — разработка и развитие медицинской информационной системы
Подробнее
▪️PHP разработчик
Удаленка. Офис в Москве. Restaurant Guru — ресурс, в котором собраны лучшие заведения со всех частей света
Подробнее
Вакансии PHP разработчиков уровня Senior
▪️PHP-разработчик
Удаленка. Офис в Москве. АЙТИ.СПЕЙС — разработка, внедрение и сопровождение ПО
Подробнее
▪️Ведущий разработчик PHP
Удаленка. Офис в Москве. Dex — разработка мобильных приложений и web-сервисов
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
tyumen.hh.ru
Вакансия Разработчик PHP (junior) в Тюмени, работа в компании Восток.Софт (вакансия в архиве c 28 мая 2024)
Зарплата: не указана. Тюмень. Требуемый опыт: 1–3 года. Полная занятость. Дата публикации: 27.05.2024.
😁7👍4🥱3🔥1
Финализация классов
Здесь обсуждается значимость применения ключевого слова final в классах PHP для повышения безопасности и автоматизации процесса их окончательной реализации.
Сначала обсуждается преимущества применения ключевого слова final в классах, а также проблем, с которыми сталкиваются инструменты статического анализа кода, такие как Rector, при попытке автоматизировать процесс финализации классов. Затем переходит к обсуждению необходимости автоматизации этого процесса, особенно в случае больших проектов с большим количеством классов.
Далее представлен инструмент Swiss Knife, который позволяет автоматически обнаруживать и финализировать классы в проекте, учитывая различные сценарии, такие как классы-родители, сущности Doctrine, классы, которые могут быть промокированы в тестах, и т. д.
Здесь обсуждается значимость применения ключевого слова final в классах PHP для повышения безопасности и автоматизации процесса их окончательной реализации.
Сначала обсуждается преимущества применения ключевого слова final в классах, а также проблем, с которыми сталкиваются инструменты статического анализа кода, такие как Rector, при попытке автоматизировать процесс финализации классов. Затем переходит к обсуждению необходимости автоматизации этого процесса, особенно в случае больших проектов с большим количеством классов.
Далее представлен инструмент Swiss Knife, который позволяет автоматически обнаруживать и финализировать классы в проекте, учитывая различные сценарии, такие как классы-родители, сущности Doctrine, классы, которые могут быть промокированы в тестах, и т. д.
Tomasvotruba
Finalize Classes - Automated and Safe
Final classes have [many](https://ocramius.github.io/blog/when-to-declare-classes-final/) [great](https://tomasvotruba.com/blog/2019/01/24/how-to-kill-parents) [benefits](https://matthiasnoback.nl/2018/09/final-classes-by-default-why/) for future human readers…
❤2
ComposerRequireChecker
Инструмент CLI для проверки того, использует ли конкретный пакет composer импортированные символы, которые не входят в его прямые зависимости от composer.
Инструмент CLI для проверки того, использует ли конкретный пакет composer импортированные символы, которые не входят в его прямые зависимости от composer.
GitHub
GitHub - maglnet/ComposerRequireChecker: A CLI tool to check whether a specific composer package uses imported symbols that aren't…
A CLI tool to check whether a specific composer package uses imported symbols that aren't part of its direct composer dependencies - maglnet/ComposerRequireChecker
👍4
Как реализовать паттерн проектирования «Адаптер» на PHP, и какие распространенные случаи его использования?
В PHP вы можете реализовать паттерн «Адаптер», чтобы обеспечить работу несовместимых интерфейсов вместе.
В нашем примере:
Adaptee — класс с несовместимым интерфейсом.
Target — интерфейс, ожидаемый клиентом.
Adapter — класс, который адаптирует Adaptee к интерфейсу Target.
Распространенные случаи использования паттерна Адаптер включают:
🟢Интеграция с легаси-кодом: Когда у вас есть старый код с другим интерфейсом, который нужно использовать в новой системе.
🟢Использование сторонних библиотек: Когда вы хотите использовать стороннюю библиотеку, которая не соответствует требуемому интерфейсу.
🟢Мокирование объектов при тестировании: Когда нужно создать мок-объекты, которые реализуют определенный интерфейс для целей тестирования.
🟢Масштабируемость системы: Когда нужно переключаться между различными реализациями функциональности без изменения кода клиента.
#вопросы_с_собеседований
В PHP вы можете реализовать паттерн «Адаптер», чтобы обеспечить работу несовместимых интерфейсов вместе.
В нашем примере:
Adaptee — класс с несовместимым интерфейсом.
Target — интерфейс, ожидаемый клиентом.
Adapter — класс, который адаптирует Adaptee к интерфейсу Target.
Распространенные случаи использования паттерна Адаптер включают:
🟢Интеграция с легаси-кодом: Когда у вас есть старый код с другим интерфейсом, который нужно использовать в новой системе.
🟢Использование сторонних библиотек: Когда вы хотите использовать стороннюю библиотеку, которая не соответствует требуемому интерфейсу.
🟢Мокирование объектов при тестировании: Когда нужно создать мок-объекты, которые реализуют определенный интерфейс для целей тестирования.
🟢Масштабируемость системы: Когда нужно переключаться между различными реализациями функциональности без изменения кода клиента.
#вопросы_с_собеседований
🔥16👍8❤1
Фасады Laravel
В статье:
— Обсуждается использование фасадов Laravel и оспаривает утверждение, что они не являются настоящими фасадами, а скорее являются прокси. Она утверждает, что при правильном использовании фасадов можно добиться чистого и тестируемого кода. Автор приводит примеры того, как использовать фасады в реальном времени для упрощения тестирования и сделать код более поддерживаемым.
— В первом примере показано, как переработать вызов статического метода в вызов обычного метода с использованием фасадов в реальном времени, что облегчает тестирование без необходимости дополнительных интерфейсов или изменений кода.
— Рассматривается концепция «горячей заменяемости», используя пример диспетчеризации заданий с различными реализациями для тестирования и производственной среды. Показано, как фасады могут упростить переключение между реализациями и сделать код более адаптивным.
В статье:
— Обсуждается использование фасадов Laravel и оспаривает утверждение, что они не являются настоящими фасадами, а скорее являются прокси. Она утверждает, что при правильном использовании фасадов можно добиться чистого и тестируемого кода. Автор приводит примеры того, как использовать фасады в реальном времени для упрощения тестирования и сделать код более поддерживаемым.
— В первом примере показано, как переработать вызов статического метода в вызов обычного метода с использованием фасадов в реальном времени, что облегчает тестирование без необходимости дополнительных интерфейсов или изменений кода.
— Рассматривается концепция «горячей заменяемости», используя пример диспетчеризации заданий с различными реализациями для тестирования и производственной среды. Показано, как фасады могут упростить переключение между реализациями и сделать код более адаптивным.
blog.oussama-mater.tech
Laravel Facades - Write Testable Code
Laravel relies heavily on Facades. Some might think they are anti-patterns, but I believe that if they are used correctly, they can result in clean and testable code. Let's see how.
👍6
PHP/FI 1. Personal Home Page Tools/Forms Interpreter
История PHP начинается не с полноценного языка программирования, а с набора CGI-скриптов на C, известного как PHP/FI 1. Здесь мы возвращаемся к истокам PHP, рассматривая его первую версию, её компиляцию и функциональность.
История PHP начинается не с полноценного языка программирования, а с набора CGI-скриптов на C, известного как PHP/FI 1. Здесь мы возвращаемся к истокам PHP, рассматривая его первую версию, её компиляцию и функциональность.
Хабр
PHP/FI 1. Personal Home Page Tools/Forms Interpreter
Путь от набора CGI-скриптов до одного из самых популярных языков веб-разработки История зарождения PHP История PHP начинается не с полноценного языка программирования, а с набора CGI-скриптов на C,...
👍7
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
❤1👍1
Как отладить любую команду Symfony, просто передав '-x'
Подход позволяет запускать любую Symfony команду в режиме отладки, даже если она не принадлежит вашему приложению, например, команды Doctrine или стандартные команды Symfony.
Это более быстрый и удобный способ отладки команд через добавление флага -x или --xdebug при вызове команды. После обнаружения этого флага слушатель событий перезапускает команду с необходимыми переменными среды для работы xDebug, используя функцию passthru().
Структура слушателя событий детально объяснена далее. Он реализует интерфейс ConsoleEvents::COMMAND и прослушивает событие configure для всех команд. Если обнаруживается флаг -x, команда перезапускается с установленными переменными среды для xDebug.
Код слушателя включает проверки типов и корректное перезапускание команды, а также учитывает ситуации, когда команда вызывается через HelpCommand.
Такой подход делает отладку Symfony команд более удобной и быстрой, особенно при работе в командной строке.
Подход позволяет запускать любую Symfony команду в режиме отладки, даже если она не принадлежит вашему приложению, например, команды Doctrine или стандартные команды Symfony.
Это более быстрый и удобный способ отладки команд через добавление флага -x или --xdebug при вызове команды. После обнаружения этого флага слушатель событий перезапускает команду с необходимыми переменными среды для работы xDebug, используя функцию passthru().
Структура слушателя событий детально объяснена далее. Он реализует интерфейс ConsoleEvents::COMMAND и прослушивает событие configure для всех команд. Если обнаруживается флаг -x, команда перезапускается с установленными переменными среды для xDebug.
Код слушателя включает проверки типов и корректное перезапускание команды, а также учитывает ситуации, когда команда вызывается через HelpCommand.
Такой подход делает отладку Symfony команд более удобной и быстрой, особенно при работе в командной строке.
DEV Community
How to debug ANY Symfony command simply passing `-x`
Debugging a Symfony console command requires setting some environment variables (depending on your...
👍7
Forwarded from PHP jobs — вакансии по PHP, Symfony, Laravel
#дайджест #phpdevjob
Вакансии PHP разработчиков уровня Junior
▪️Разработчик PHP
Удаленка. Офис в Москве. Adv.Cake — интернет-маркетинг
Подробнее
▪️PHP developer
Омск. ИТБ — услуги интернет-маркетинга
Подробнее
Вакансии PHP разработчиков уровня Middle
▪️PHP-разработчик
Удаленка. Офис в Ульяновске. Дион Софт — разработка и развитие медицинской информационной системы
Подробнее
▪️PHP разработчик
Удаленка. Офис в Москве. ВсеИнструменты — всё для дома, дачи, стройки и ремонта
Подробнее
Вакансии PHP разработчиков уровня Senior
▪️WEB-программист
Тула. Contactgroup — продвижение и разработка сайтов
Подробнее
▪️PHP разработчик
Москва. EcoFinance — развитие и внедрение продуктов онлайн-кредитования
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
Вакансии PHP разработчиков уровня Junior
▪️Разработчик PHP
Удаленка. Офис в Москве. Adv.Cake — интернет-маркетинг
Подробнее
▪️PHP developer
Омск. ИТБ — услуги интернет-маркетинга
Подробнее
Вакансии PHP разработчиков уровня Middle
▪️PHP-разработчик
Удаленка. Офис в Ульяновске. Дион Софт — разработка и развитие медицинской информационной системы
Подробнее
▪️PHP разработчик
Удаленка. Офис в Москве. ВсеИнструменты — всё для дома, дачи, стройки и ремонта
Подробнее
Вакансии PHP разработчиков уровня Senior
▪️WEB-программист
Тула. Contactgroup — продвижение и разработка сайтов
Подробнее
▪️PHP разработчик
Москва. EcoFinance — развитие и внедрение продуктов онлайн-кредитования
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
👍4