#полезное
👨💻 Внедряем формулы как в Эксель
Пользователи постоянно меняют логику подсчёта? Они не довольны скоростью с которой вы меняете код? Уже надоело так часто менять одно и тоже? Если да, то получайте решение: пускай пользователи сами пишут формулы на языке, который им более знаком: это формулы эксель. От вас потребуется лишь надо научить своё приложение считать это. Как это сделать? С помощью чёрной магии конечно!
Хабр
👉 Новости 👉 База вопросов
Пользователи постоянно меняют логику подсчёта? Они не довольны скоростью с которой вы меняете код? Уже надоело так часто менять одно и тоже? Если да, то получайте решение: пускай пользователи сами пишут формулы на языке, который им более знаком: это формулы эксель. От вас потребуется лишь надо научить своё приложение считать это. Как это сделать? С помощью чёрной магии конечно!
Хабр
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Как предотвратить взаимоблокировки в базе данных?
Взаимоблокировки возникают, когда несколько транзакций блокируют друг друга,
ожидая освобождения ресурсов. Чтобы их избежать, следует:
🟠 Всегда обращаться к ресурсам базы данных в одном порядке.
🟠 Сокращать время выполнения транзакций, чтобы уменьшить вероятность
конфликта.
🟠 Использовать таймауты для автоматического завершения зависших транзакций.
🟠 Регулярно анализировать производительность базы данных и оптимизировать
запросы, добавляя индексы и избегая сложных блокировок.
👉 Новости 👉 База вопросов
Взаимоблокировки возникают, когда несколько транзакций блокируют друг друга,
ожидая освобождения ресурсов. Чтобы их избежать, следует:
конфликта.
запросы, добавляя индексы и избегая сложных блокировок.
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