🔥 Ускоряем тесты с ParaTest
Если вы часто сталкиваетесь с медленными тестами и хоите ускорить процесс разработки, стоит попробовать ParaTest. Этот инструмент позволяет запускать тесты параллельно, что значительно сокращает время выполнения, особенно на больших проектах.
Почему стоит использовать ParaTest:
🔸 Параллельное выполнение: тесты запускаются в несколько процессов одновременно, что ускоряет их выполнение.
🔸 Преимущества для CI: особенно полезно для непрерывной интеграции — тесты запускаются быстрее, что ускоряет релизы.
🔸 Простая установка: ParaTest можно интегрировать почти как замену PHPUnit без серьезных изменений в коде.
Какие проблемы могут возникнуть:
При параллельном запуске могут возникнуть ошибки, связанные с одновременным доступом к базе данных (например, при попытке создать одинаковые таблицы). Для этого нужно изменить конфигурацию тестов, чтобы каждый тест использовал транзакции или запускал миграции до начала тестов.
Как решить:
🔹 Используй
🔹 В случае с SQLite можно оставить стандартные настройки, так как каждая база будет независимой.
Результат:
После настройки ParaTest ты можешь увидеть ускорение в 2-10 раз, особенно на крупных проектах. Это заметно сокращает время, которое тратится на тестирование, и помогает быстрее доставлять код в продакшн.
💡 Совет: если проект большой, начинай с разделения тестов на группы и постепенно переводя их на параллельное выполнение, чтобы получать результат сразу.
🔗 Читать Статью
Библиотека пхпшника
Если вы часто сталкиваетесь с медленными тестами и хоите ускорить процесс разработки, стоит попробовать ParaTest. Этот инструмент позволяет запускать тесты параллельно, что значительно сокращает время выполнения, особенно на больших проектах.
Почему стоит использовать ParaTest:
🔸 Параллельное выполнение: тесты запускаются в несколько процессов одновременно, что ускоряет их выполнение.
🔸 Преимущества для CI: особенно полезно для непрерывной интеграции — тесты запускаются быстрее, что ускоряет релизы.
🔸 Простая установка: ParaTest можно интегрировать почти как замену PHPUnit без серьезных изменений в коде.
Какие проблемы могут возникнуть:
При параллельном запуске могут возникнуть ошибки, связанные с одновременным доступом к базе данных (например, при попытке создать одинаковые таблицы). Для этого нужно изменить конфигурацию тестов, чтобы каждый тест использовал транзакции или запускал миграции до начала тестов.
Как решить:
🔹 Используй
DatabaseTransactions
вместо RefreshDatabase
для предотвращения конфликтов в базе данных при параллельном запуске.🔹 В случае с SQLite можно оставить стандартные настройки, так как каждая база будет независимой.
Результат:
После настройки ParaTest ты можешь увидеть ускорение в 2-10 раз, особенно на крупных проектах. Это заметно сокращает время, которое тратится на тестирование, и помогает быстрее доставлять код в продакшн.
💡 Совет: если проект большой, начинай с разделения тестов на группы и постепенно переводя их на параллельное выполнение, чтобы получать результат сразу.
🔗 Читать Статью
Библиотека пхпшника
👏1😁1
Forwarded from Библиотека джависта | Java, Spring, Maven, Hibernate
В каждой команде бывают специалисты, чья ценность не укладывается в привычные метрики продуктивности. Они редко в топе по количеству закрытых задач, но именно их вклад критически важен для общего результата.
Такие люди помогают менее опытным коллегам разобраться в сложных вопросах, улучшают архитектуру и процессы незаметными правками, предотвращают ошибки ещё до того, как они стали задачами, создают культуру качества, которую не видно в отчётах.
Иногда стоит пересмотреть, как мы оцениваем эффективность. Потому что не все цифры отражают суть.
Please open Telegram to view this post
VIEW IN TELEGRAM
💯11❤2🥱2👍1
Media is too big
VIEW IN TELEGRAM
Разбор ключевых трендов ОС на персональных компьютерах и мобильных устройствах за последние 44 года! Как Windows уступил лидерство мобильным платформам, а Linux закрепил позиции в качестве базиса для множества систем — смотрите в видео.
1981–2000: анализ продаж ПК и опросы пользователей.
2000–2025: отчёты интернет-провайдеров и данные веб-трафика.
🔗 Оригинал с ютуба
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍1
Почему вы должны указывать тип данных в массивах в PHP
Статья обсуждает важность и преимущества использования типов массивов в PHP для повышения ясности кода, улучшения автодополнения в IDE и улучшения статического анализа.
👉 Читать
Библиотека пхпшника
Статья обсуждает важность и преимущества использования типов массивов в PHP для повышения ясности кода, улучшения автодополнения в IDE и улучшения статического анализа.
👉 Читать
Библиотека пхпшника
👍10❤1
❓ Нужны ли PHP value objects как first-class citizen?
PHP в последние годы очень сильно поменялся. Типизация стала строже, появились enum'ы, readonly-свойства, promoted параметры в конструкторах… Но полноценной поддержки value objects (VO) — по-прежнему нет.
Хочешь передать Email, Amount или Money как обособленную сущность? Пиши класс руками. Хочешь избежать дублирования — делай свой фреймворк, или подтягивай Symfony/Doctrine компоненты. Где компактный и удобный синтаксис? Где встроенные механизмы сравнения, сериализации, валидации?
В других языках (Scala, Kotlin, Rust) это уже часть культуры. А у нас всё ещё debate.
💬 Вопрос к вам, PHP-разработчики:
— Почему, по-вашему, в PHP до сих пор нет нативной поддержки value objects?— Нужны ли они вообще как встроенная часть языка?— Может, достаточно классов и самодисциплины?
Библиотека пхпшника #междусобойчик
PHP в последние годы очень сильно поменялся. Типизация стала строже, появились enum'ы, readonly-свойства, promoted параметры в конструкторах… Но полноценной поддержки value objects (VO) — по-прежнему нет.
Хочешь передать Email, Amount или Money как обособленную сущность? Пиши класс руками. Хочешь избежать дублирования — делай свой фреймворк, или подтягивай Symfony/Doctrine компоненты. Где компактный и удобный синтаксис? Где встроенные механизмы сравнения, сериализации, валидации?
В других языках (Scala, Kotlin, Rust) это уже часть культуры. А у нас всё ещё debate.
💬 Вопрос к вам, PHP-разработчики:
— Почему, по-вашему, в PHP до сих пор нет нативной поддержки value objects?— Нужны ли они вообще как встроенная часть языка?— Может, достаточно классов и самодисциплины?
Библиотека пхпшника #междусобойчик
👍7
Instructor
Библиотека для структурированной экстракции данных на PHP, основанная на LLM. Создан для простоты, прозрачности и контроля.
Пример показывает, как инструктор извлекает структурированную информацию из предоставленного текста (или последовательности сообщений в чате).
🔗 Github
#инструменты
Библиотека для структурированной экстракции данных на PHP, основанная на LLM. Создан для простоты, прозрачности и контроля.
Пример показывает, как инструктор извлекает структурированную информацию из предоставленного текста (или последовательности сообщений в чате).
🔗 Github
#инструменты
👍15❤1
Метод
Это полезно, если вам нужно получить конкретный набор моделей и вы не хотите проверять, соответствует ли полученное количество ожидаемому количеству.
Библиотека пхпшника #буст
findOrFail
также принимает список идентификаторов. Если какой-либо из этих идентификаторов не найден, то он «ошибочен».Это полезно, если вам нужно получить конкретный набор моделей и вы не хотите проверять, соответствует ли полученное количество ожидаемому количеству.
Библиотека пхпшника #буст
👾6👍2❤1😢1
Forwarded from Библиотека задач по PHP | тесты, код, задания
Что выведет код?
❤️ — Fatal error
👍 — 2
🔥 — 1
❤️ — Fatal error
👍 — 2
🔥 — 1
👍93❤18👾1
Forwarded from Библиотека шарписта | C#, F#, .NET, ASP.NET
🕸 Как работает протокол HTTP/2: основные принципы и преимущества в сравнении с HTTP/1.1
HTTP/2 — это как переход с однополосной дороги HTTP/1.1 на скоростное шоссе: быстрее, эффективнее и без пробок.
Узнайте, как новые технологии ускоряют загрузку веб-страниц и улучшают работу приложений.
➡️ Читать статью
🐸 Библиотека шарписта
HTTP/2 — это как переход с однополосной дороги HTTP/1.1 на скоростное шоссе: быстрее, эффективнее и без пробок.
Узнайте, как новые технологии ускоряют загрузку веб-страниц и улучшают работу приложений.
Please open Telegram to view this post
VIEW IN TELEGRAM
👏3
⬆️ Привязка типизированных вариаций
Знаете ли вы, что можно привязать типизированные переменные к контейнеру? Laravel поставляется с 3 методами, позволяющими вам это сделать: «
Библиотека пхпшника #буст
Знаете ли вы, что можно привязать типизированные переменные к контейнеру? Laravel поставляется с 3 методами, позволяющими вам это сделать: «
when()
», «needs()
» и «give()
» вы можете продолжать использовать DI без опасений 🚀Библиотека пхпшника #буст
👾2❤1
Forwarded from Библиотека C/C++ разработчика | cpp, boost, qt
Сомневаетесь в своем прогрессе? Мы собрали 7 четких признаков того, что вы реально растете как разраб. Спойлер: дело не только в коде!
👉 Подробнее в статье
👉 Подробнее в статье
🧠 Ковариантность и контравариантность в PHP — кратко и по сути
Эти термины звучат сложно, но суть у них простая. Разработчики используют их идеи постоянно — просто не всегда знают, как это называется. Ниже — простое объяснение с примерами.
🔍 Что это такое?
Ковариантность — когда метод возвращает более конкретный тип, чем у родителя.
Контравариантность — когда метод принимает менее конкретный тип, чем у родителя.
✅ Ковариантность (return types)
PHP поддерживает ковариантность только для возвращаемых значений. Примеры:
Можно «сузить» возвращаемый тип в дочернем классе — и это будет валидно.
❌ Контравариантность в return'ах
PHP не позволяет делать возвращаемый тип менее конкретным.
Например,
✅ Контравариантность (параметры)
А вот с параметрами всё наоборот — здесь PHP позволяет делать типы шире:
Такой подход делает методы более гибкими при переопределении.
❌ Ковариантность в параметрах
Нельзя в параметрах делать тип более конкретным, чем у родителя. Это приведёт к ошибке.
🚫 Конструкторы — отдельная история
Ковариантность и контравариантность на конструкторы не влияют. У них своя логика, и они не наследуются как обычные методы.
👉 Читать статью
Эти термины звучат сложно, но суть у них простая. Разработчики используют их идеи постоянно — просто не всегда знают, как это называется. Ниже — простое объяснение с примерами.
🔍 Что это такое?
Ковариантность — когда метод возвращает более конкретный тип, чем у родителя.
Контравариантность — когда метод принимает менее конкретный тип, чем у родителя.
✅ Ковариантность (return types)
PHP поддерживает ковариантность только для возвращаемых значений. Примеры:
float|int
→ int
BaseClass
→ ChildClass
Exportable
→ Exportable&Cacheable
Можно «сузить» возвращаемый тип в дочернем классе — и это будет валидно.
❌ Контравариантность в return'ах
PHP не позволяет делать возвращаемый тип менее конкретным.
Например,
int → float|int
— вызовет ошибку.✅ Контравариантность (параметры)
А вот с параметрами всё наоборот — здесь PHP позволяет делать типы шире:
array
→ array|Collection
Traversable&Collection
→ Collection
EloquentCollection
→ Collection
Такой подход делает методы более гибкими при переопределении.
❌ Ковариантность в параметрах
Нельзя в параметрах делать тип более конкретным, чем у родителя. Это приведёт к ошибке.
🚫 Конструкторы — отдельная история
Ковариантность и контравариантность на конструкторы не влияют. У них своя логика, и они не наследуются как обычные методы.
👉 Читать статью
👍15
Как интегрировать Laravel с Apache Kafka
Статья рассказывает о том, как интегрировать Apache Kafka с Laravel на примере реального кейса — обработка заказа в e-commerce приложении, включая оплату и обновление склада.
🔗 Читать статью
Библиотека пхпшника #буст
Статья рассказывает о том, как интегрировать Apache Kafka с Laravel на примере реального кейса — обработка заказа в e-commerce приложении, включая оплату и обновление склада.
🔗 Читать статью
Библиотека пхпшника #буст
👍9🥱2❤1🤔1😢1
🧱⛏️ Чекни свой крафт: 8 признаков, что разработчик слишком залип в Minecraft
Думаешь, что твоя продуктивность падает из-за багов в коде? А может, все дело в том, что ты мысленно фармишь крипперов, пока твой PM объясняет задачу?
😎 Пройди наш тест и узнай, насколько глубоко ты провалился в пиксельную кроличью нору!
👉 Пройти тест
Библиотека пхпшника
Думаешь, что твоя продуктивность падает из-за багов в коде? А может, все дело в том, что ты мысленно фармишь крипперов, пока твой PM объясняет задачу?
😎 Пройди наш тест и узнай, насколько глубоко ты провалился в пиксельную кроличью нору!
Библиотека пхпшника
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3🥱2
🐘 Промпт дня: собеседование по PHP
Этот промпт поможет вам провести полноценное mock-интервью, где можно потренировать навыки в PHP и получить развёрнутую обратную связь по каждому ответу.
Используем этот промпт, чтобы провести техническую беседу:
Библиотека пхпшника #буст
Этот промпт поможет вам провести полноценное mock-интервью, где можно потренировать навыки в PHP и получить развёрнутую обратную связь по каждому ответу.
Используем этот промпт, чтобы провести техническую беседу:
You are a Senior PHP Developer and experienced interviewer, known for your ability to assess a candidate's PHP proficiency through targeted questions and constructive feedback. Your goal is to conduct a mock PHP interview, simulating a real-world technical assessment. You will ask one question at a time, wait for the candidate's response, provide feedback and corrections, and then proceed to the next question.
Here is the format you will use to conduct the mock interview:
---
Question Number: $question_number
Question: $php_question
(Wait for candidate's response)
#
Feedback on Candidate's Response
Strengths: $strengths_of_response
Areas for Improvement: $areas_for_improvement
Corrected/Improved Answer (if necessary): $corrected_answer
## Next Question
(Proceed to the next question, following the same format)
---
Begin the mock interview
Библиотека пхпшника #буст
🔥8👍3😢2🌚1
🔍 Задумывались ли вы о
Оператор строгого сравнения
Но так ли необходима встроенная проверка типов в
Раньше типичный код выглядел так:
Сейчас, с распространением типизации, логика меняется:
Проверка типов переместилась в сигнатуру функции, делая строгое сравнение избыточным.
Даже в функциях с разными возвращаемыми типами
Но ведь можно заменить на
Вывод:
💬 А какой вариант чаще используете вы?
Библиотека пхпшника #междусобойчик
===
в PHP?Оператор строгого сравнения
===
настолько привычен, что многие разработчики автоматически добавляют третий знак равенства, даже не задумываясь.Но так ли необходима встроенная проверка типов в
===
?Раньше типичный код выглядел так:
function isEqual($a, $b){ return $a === $b;}
Сейчас, с распространением типизации, логика меняется:
function isEqual(string $a, string $b){ return $a == $b; // Типы уже гарантированы}
Проверка типов переместилась в сигнатуру функции, делая строгое сравнение избыточным.
Даже в функциях с разными возвращаемыми типами
===
не всегда оправдан. Классический пример — strpos()
:$pos = strpos('abc', 'a');// Традиционный вариант:if ($pos === false) { // действие, если не найдено}`
Но ведь можно заменить на
is_bool($pos)
или явную проверку $pos === false && !is_int($pos)
.Вывод:
===
остаётся полезным инструментом, но его применение не всегда обосновано. Гибкое использование ==
в сочетании с современной типизацией делает код чище без потери надёжности.💬 А какой вариант чаще используете вы?
Библиотека пхпшника #междусобойчик
😁17🌚5🤔2🥱1
Продолжаем рассказывать про полезные фишки шторма для начинающих. Вот подборка дополнительных возможностей, не попавших в прошлые подборки:
🔹 Ctrl + E: открыть список недавно измененных файлов.
🔹 Alt + Insert: генерация кода, например, геттеров, сеттеров или конструкторов.
🔹 Shift + F6: переименование переменной, функции или файла.
Библиотека пхпшника #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1🔥1🥱1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🎉🐙🐱 20 лет Git: все такой же необычный, все такой же великолепный
Легендарному Git стукнуло 20! Вспоминаем, как проект, который Линус Торвальдс называл «тупым менеджером контента», стал незаменимым инструментом для всех, кто хоть раз писал код или даже просто хранил файлы.
Погружаемся в историю, эволюцию и влияние Git на индустрию разработки.
➡️ Читать статью
🐸 Библиотека программиста
Легендарному Git стукнуло 20! Вспоминаем, как проект, который Линус Торвальдс называл «тупым менеджером контента», стал незаменимым инструментом для всех, кто хоть раз писал код или даже просто хранил файлы.
Погружаемся в историю, эволюцию и влияние Git на индустрию разработки.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9