#Собес
🤔 Как предотвратить взаимоблокировки в базе данных?
Взаимоблокировки возникают, когда несколько транзакций блокируют друг друга,
ожидая освобождения ресурсов. Чтобы их избежать, следует:
🟠 Всегда обращаться к ресурсам базы данных в одном порядке.
🟠 Сокращать время выполнения транзакций, чтобы уменьшить вероятность
конфликта.
🟠 Использовать таймауты для автоматического завершения зависших транзакций.
🟠 Регулярно анализировать производительность базы данных и оптимизировать
запросы, добавляя индексы и избегая сложных блокировок.
👉 Новости 👉 База вопросов
Взаимоблокировки возникают, когда несколько транзакций блокируют друг друга,
ожидая освобождения ресурсов. Чтобы их избежать, следует:
конфликта.
запросы, добавляя индексы и избегая сложных блокировок.
Please open Telegram to view this post
VIEW IN TELEGRAM
YeaHub
YeaHub — тренажер собеседований по IT
5000+ вопросов для подготовки к интервью. Фильтры, квизы, статистика!
#полезное
😇 Неявное привязывание Enum = чистые и типобезопасные маршруты
Определите
👉 Новости 👉 База вопросов
Определите
enum
на основе строки, используйте его в качестве type hint в определении маршрута — и Laravel автоматически проверит сегменты маршрута, возвращая 404 для недопустимых значений.Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😇 Совет по Bug Bounty
Утечка страницы PHP Info.
Открытая страница PHP Info может раскрывать множество конфиденциальных данных — от настроек конфигурации до пользовательских сессионных куки.
Например, в сочетании с XSS это может привести к полному захвату учетной записи.
👉 Новости 👉 База вопросов
Утечка страницы PHP Info.
Открытая страница PHP Info может раскрывать множество конфиденциальных данных — от настроек конфигурации до пользовательских сессионных куки.
Например, в сочетании с XSS это может привести к полному захвату учетной записи.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😬 Хардкорная игра-тренажёр для PHP-разработчиков
Наткнулся на забавную игру в формате тренажёра, цель которой — проходить задания для прокачки навыков кодинга на языке PHP.
Правило всего одно: нужно переписать функцию так, чтобы она вернула true.
С каждым уровнем сложность заданий растёт. Никаких объяснений и руководств, всё по хардкору
👉 Новости 👉 База вопросов
Наткнулся на забавную игру в формате тренажёра, цель которой — проходить задания для прокачки навыков кодинга на языке PHP.
Правило всего одно: нужно переписать функцию так, чтобы она вернула true.
С каждым уровнем сложность заданий растёт. Никаких объяснений и руководств, всё по хардкору
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Как реализовать кэширование в РНР для оптимизации запросов к базе данных?
Кэширование сохраняет результаты запросов в быстром хранилище (например, Redis или Memcached) для последующего использования. При повторном запросе приложение сначала проверяет кэш. Если данные найдены, они возвращаются из кэша, а не из базы данных. Это значительно ускоряет выполнение запросов и уменьшает нагрузку на сервер базы данных.
👉 Новости 👉 База вопросов
Кэширование сохраняет результаты запросов в быстром хранилище (например, Redis или Memcached) для последующего использования. При повторном запросе приложение сначала проверяет кэш. Если данные найдены, они возвращаются из кэша, а не из базы данных. Это значительно ускоряет выполнение запросов и уменьшает нагрузку на сервер базы данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
YeaHub
YeaHub — тренажер собеседований по IT
5000+ вопросов для подготовки к интервью. Фильтры, квизы, статистика!
#полезное
😇 Совет по PHP: First-Class Callables
PHP 8.1 представил first-class callables, которые упрощают синтаксис, особенно при работе с коллекциями Laravel, где часто используются замыкания
👉 Новости 👉 База вопросов
PHP 8.1 представил first-class callables, которые упрощают синтаксис, особенно при работе с коллекциями Laravel, где часто используются замыкания
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😇 Знали ли вы, что PHP переподключается к Redis при каждом запросе?
В Laravel 12 появилась новая переменная окружения
👉 Новости 👉 База вопросов
В Laravel 12 появилась новая переменная окружения
REDIS_PERSISTENT
, которая позволяет сохранять соединения с Redis между запросами.Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 PhpLDAPadmin
Это веб инструмент управления данными LDAP для системных администраторов. Он обычно известен и называется "PLA".
При этом, PLA создан с учетом соответствия RFC LDAP, что позволяет использовать его с любым сервером LDAP
Гитхаб
👉 Новости 👉 База вопросов
Это веб инструмент управления данными LDAP для системных администраторов. Он обычно известен и называется "PLA".
При этом, PLA создан с учетом соответствия RFC LDAP, что позволяет использовать его с любым сервером LDAP
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Объясните преимущества и недостатки использования фреймворка в контексте РНР.
Фреймворки ускоряют разработку благодаря готовым инструментам, следованию стандартам и встроенным решениям для типичных задач. Они облегчают поддержку и масштабирование, но могут быть избыточными для маленьких проектов, добавлять сложности и приводить к зависимости от конкретного инструмента. Выбор фреймворка зависит от задач проекта и баланса между удобством разработки и потребностями в производительности.
👉 Новости 👉 База вопросов
Фреймворки ускоряют разработку благодаря готовым инструментам, следованию стандартам и встроенным решениям для типичных задач. Они облегчают поддержку и масштабирование, но могут быть избыточными для маленьких проектов, добавлять сложности и приводить к зависимости от конкретного инструмента. Выбор фреймворка зависит от задач проекта и баланса между удобством разработки и потребностями в производительности.
Please open Telegram to view this post
VIEW IN TELEGRAM
YeaHub
YeaHub — тренажер собеседований по IT
5000+ вопросов для подготовки к интервью. Фильтры, квизы, статистика!
#полезное
😊 Что умеет Rector: пишем кастомные правила для автоматизации рефакторинга PHP-проектов
Если вам часто приходится сталкиваться с рефакторингом старых PHP-проектов, при этом их потребности выходят за пределы штатного набора правил, эта статья для вас.
Хабр
👉 Новости 👉 База вопросов
Если вам часто приходится сталкиваться с рефакторингом старых PHP-проектов, при этом их потребности выходят за пределы штатного набора правил, эта статья для вас.
Хабр
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🤯 Совет по Laravel Eloquent
Если вам нужно добавить условие в запрос на основе некоторого условия в PHP, используйте метод
Вы предпочитаете A или B?
Код становится короче и удобнее для чейнинга с другими методами запроса, но... может быть, менее читаемым?
👉 Новости 👉 База вопросов
Если вам нужно добавить условие в запрос на основе некоторого условия в PHP, используйте метод
when()
в Eloquent.Вы предпочитаете A или B?
Код становится короче и удобнее для чейнинга с другими методами запроса, но... может быть, менее читаемым?
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
🤯 Как выбрать стратегию кэширования: разбор 7 популярных алгоритмов
Кешировать нужно с умом. И нет, LRU — не серебряная пуля.
В статье вас ждёт разбор алгоритмов: LRU, LFU, FIFO и другие
– Примеры, где каждый работает лучше
– Плюсы и минусы подходов
– Практические советы по выбору стратегии
Если проектируете систему с большими нагрузками или оптимизируете производительность — материал будет как раз.
Читать статью
👉 Новости 👉 База вопросов
Кешировать нужно с умом. И нет, LRU — не серебряная пуля.
В статье вас ждёт разбор алгоритмов: LRU, LFU, FIFO и другие
– Примеры, где каждый работает лучше
– Плюсы и минусы подходов
– Практические советы по выбору стратегии
Если проектируете систему с большими нагрузками или оптимизируете производительность — материал будет как раз.
Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Что такое полиморфизм в РНР?
Полиморфизм в РНР позволяет использовать методы с одинаковым именем, но разным поведением в зависимости от типа обьекта. Это достигается через интерфейсы или абстрактные классы, которые задают общие методы, а конкретные классы реализуют их по-своему.
👉 Новости 👉 База вопросов
Полиморфизм в РНР позволяет использовать методы с одинаковым именем, но разным поведением в зависимости от типа обьекта. Это достигается через интерфейсы или абстрактные классы, которые задают общие методы, а конкретные классы реализуют их по-своему.
Please open Telegram to view this post
VIEW IN TELEGRAM
YeaHub
YeaHub — тренажер собеседований по IT
5000+ вопросов для подготовки к интервью. Фильтры, квизы, статистика!
#ЛитКод
Задача: 441. Arranging Coins
У вас есть n монет, и вы хотите построить лестницу из этих монет. Лестница состоит из k рядов, где i-й ряд содержит ровно i монет. Последний ряд лестницы может быть неполным.
Дано целое число n, верните количество полных рядов лестницы, которые вы сможете построить.
Пример:
👨💻 Алгоритм:
1⃣ Если мы глубже посмотрим на формулу задачи, мы можем решить её с помощью математики, без использования итераций.
2⃣ Напомним, что условие задачи можно выразить следующим образом: k(k + 1) ≤ 2N.
3⃣ Это можно решить методом выделения полного квадрата, (k + 1/2)² - 1/4 ≤ 2N. Что приводит к следующему ответу: k = [sqrt(2N + 1/4) - 1/2].
😎 Решение:
👉 Новости 👉 База вопросов
Задача: 441. Arranging Coins
У вас есть n монет, и вы хотите построить лестницу из этих монет. Лестница состоит из k рядов, где i-й ряд содержит ровно i монет. Последний ряд лестницы может быть неполным.
Дано целое число n, верните количество полных рядов лестницы, которые вы сможете построить.
Пример:
Input: n = 5
Output: 2
Explanation: Because the 3rd row is incomplete, we return 2.
class Solution {
function arrangeCoins($n) {
return (int)(sqrt(2 * $n + 0.25) - 0.5);
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😇 PDO или ORM?
PDO — для тех, кто ценит полный контроль. Пишете SQL вручную, понимаете, что происходит под капотом. Гибкость максимальна, но код засоряется повторениями, а сложные запросы становятся испытанием при развитии проекта.
ORM (Eloquent, Doctrine) — путь удобства. Работаете с объектами вместо SQL, код становится чище, а разработка быстрее. Но магия абстракции может привести к неожиданным SQL-запросам, проблемам с производительностью и сложной отладке.
👉 Новости 👉 База вопросов
PDO — для тех, кто ценит полный контроль. Пишете SQL вручную, понимаете, что происходит под капотом. Гибкость максимальна, но код засоряется повторениями, а сложные запросы становятся испытанием при развитии проекта.
ORM (Eloquent, Doctrine) — путь удобства. Работаете с объектами вместо SQL, код становится чище, а разработка быстрее. Но магия абстракции может привести к неожиданным SQL-запросам, проблемам с производительностью и сложной отладке.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😐 Ваш файл
РЕШЕНИЕ 1: Команды в терминале
Если нужно что-то найти ОДИН РАЗ, используйте одну из этих команд:
🟠
🟠
🟠
РЕШЕНИЕ 2: Изменение режима логирования на "daily"
В файле
Это заставит Laravel создавать новый лог-файл каждый день (например,
РЕШЕНИЕ 3: Пакет Log Viewer
Пакет opcodesio/log-viewer предоставляет удобную панель для просмотра логов.
РЕШЕНИЕ 4: Внешние платные инструменты
Сервисы ОТСЛЕЖИВАНИЯ ОШИБОК, которые автоматически собирают и организуют ошибки:
🟠 Sentry
🟠 Bugsnag
🟠 Flare
Сервисы ДЛЯ УПРАВЛЕНИЯ ЛОГАМИ:
🟠 Papertrail
🟠 Loggly
🟠 LogDNA
👉 Новости 👉 База вопросов
laravel.log
слишком большой? Трудно читать/искать нужную информацию?РЕШЕНИЕ 1: Команды в терминале
Если нужно что-то найти ОДИН РАЗ, используйте одну из этих команд:
tail -n 100 storage/logs/laravel.log
– показать последние 100 строкtail -f storage/logs/laravel.log
– потоковое обновление лога в реальном времениgrep -i "error" storage/logs/laravel.log
– поиск ошибок (без учета регистра)РЕШЕНИЕ 2: Изменение режима логирования на "daily"
В файле
.env
установите:LOG_CHANNEL=daily
Это заставит Laravel создавать новый лог-файл каждый день (например,
laravel-2025-01-01.log
).РЕШЕНИЕ 3: Пакет Log Viewer
Пакет opcodesio/log-viewer предоставляет удобную панель для просмотра логов.
РЕШЕНИЕ 4: Внешние платные инструменты
Сервисы ОТСЛЕЖИВАНИЯ ОШИБОК, которые автоматически собирают и организуют ошибки:
Сервисы ДЛЯ УПРАВЛЕНИЯ ЛОГАМИ:
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Что такое инкапсуляция и как она реализуется в РНР?
Инкапсуляция - это принцип ООП, при котором данные и методы, работающие с этими данными, объединяются в одном классе, а доступ к этим данным ограничивается с помощью модификаторов доступа (public, private, protected). Это позволяет скрыть внутренние детали реализации и управлять доступом к данным.
👉 Новости 👉 База вопросов
Инкапсуляция - это принцип ООП, при котором данные и методы, работающие с этими данными, объединяются в одном классе, а доступ к этим данным ограничивается с помощью модификаторов доступа (public, private, protected). Это позволяет скрыть внутренние детали реализации и управлять доступом к данным.
Please open Telegram to view this post
VIEW IN TELEGRAM
YeaHub
YeaHub — тренажер собеседований по IT
5000+ вопросов для подготовки к интервью. Фильтры, квизы, статистика!
#полезное
😐 Ускоряем работу в PhpStorm: самые полезные хоткеи
И снова горячие клавиши. Вот подборка для работы с кодом:
🟠 Alt + Enter: универсальный контекстный помощник, отображающий доступные действия в зависимости от положения курсора.
🟠 Ctrl + P: показать подсказку по параметрам метода или функции.
🟠 Ctrl + Shift + I: быстрый просмотр реализации метода или функции.
👉 Новости 👉 База вопросов
И снова горячие клавиши. Вот подборка для работы с кодом:
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 Buggregator — удобная отладка
Buggregator — это идеальный инструмент отладки, который работает как сервер VarDumper, профилировщик Xhprof, локальный SMTP-сервер, локальный Sentry и многое другое.
👉 Новости 👉 База вопросов
Buggregator — это идеальный инструмент отладки, который работает как сервер VarDumper, профилировщик Xhprof, локальный SMTP-сервер, локальный Sentry и многое другое.
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Как используется наследование в РНР?
Наследование в РНР позволяет одному классу (подклассу) наследовать методы и свойства другого класса (родительского класса). Это позволяет повторно использовать код и создавать иерархические связи между классами, где подклассы могут расширять или изменять функциональность родительского класса, сохраняя при этом общие черты.
👉 Новости 👉 База вопросов
Наследование в РНР позволяет одному классу (подклассу) наследовать методы и свойства другого класса (родительского класса). Это позволяет повторно использовать код и создавать иерархические связи между классами, где подклассы могут расширять или изменять функциональность родительского класса, сохраняя при этом общие черты.
Please open Telegram to view this post
VIEW IN TELEGRAM
YeaHub
YeaHub — тренажер собеседований по IT
5000+ вопросов для подготовки к интервью. Фильтры, квизы, статистика!