#Собес #authentication #password #hash
🤔 Как реализовать аутентификацию в PHP?
💬 Кратко:
Для реализации аутентификации в PHP обычно используется проверка имени пользователя и пароля. Пароли должны храниться в базе данных в зашифрованном виде (например, с использованием
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Как реализовать аутентификацию в PHP?
💬 Кратко:
Для реализации аутентификации в PHP обычно используется проверка имени пользователя и пароля. Пароли должны храниться в базе данных в зашифрованном виде (например, с использованием
bcrypt). При успешной аутентификации создаётся сессия для отслеживания состояния пользователя. Важно использовать HTTPS для защиты данных, а также предусмотреть дополнительные методы безопасности, такие как двухфакторная аутентификация.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Функция array_column может доставать не только колонки массива, как казалось бы, но и свойства объектов:
А вы знали про такое?
🚀 Пост Guru PHP: @msavin_dev
enum Status: string {
case Active = 'active';
case Inactive = 'inactive';
case Pending = 'pending';
}
// What does self::cases() return?
var_dump(Status::cases());
// array(3) {
// [0]=> enum(Status::Active) // <- These are OBJECTS
// [1]=> enum(Status::Inactive) // <- Not arrays
// [2]=> enum(Status::Pending)
// }
// Each case object has public readonly properties:
$case = Status::Active;
echo $case->value; // "active" (string - the backing value)
// array_column can extract these properties!
$values = array_column(Status::cases(), 'value');
var_dump($values);
// array(3) {
// [0]=> string(6) "active"
// [1]=> string(8) "inactive"
// [2]=> string(7) "pending"
// }
А вы знали про такое?
Please open Telegram to view this post
VIEW IN TELEGRAM
www.php.net
PHP: array_column - Manual
Return the values from a single column in the input array
👍2
#Собес #postgres #sql #php
🤔 Middle PHP разработчик в Анлимитед Продакшн
Техническое собеседование. Вилка: от 165к. Собеседование с фокусом на архитектуру веб-приложений, принципы SOLID, работу с базами данных PostgreSQL и понимание основ безопасности API.
💬 Вопросы:
- Алгоритмы агрегации данных — как работает GROUP BY под капотом (на примере CSV-файла без БД)?
- Как обеспечить уникальность необязательного поля (например, рабочего телефона) с учётом NULL-значений?
- Что кэшировать, а что нет? Инвалидация кэша при изменении данных.
- Стратегии кэширования тяжёлых вычислений (например, поиска товаров с фильтрами) — cache-aside, проблема cold start.
- Как работает идемпотентность под капотом — где и как хранятся ключи, с чем сравнивается запрос?
👉 Все вопросы из этого собеседования (26)
📣 Хочешь больше собесов?
Подпишись на наш главный канал
🤔 Middle PHP разработчик в Анлимитед Продакшн
Техническое собеседование. Вилка: от 165к. Собеседование с фокусом на архитектуру веб-приложений, принципы SOLID, работу с базами данных PostgreSQL и понимание основ безопасности API.
💬 Вопросы:
- Алгоритмы агрегации данных — как работает GROUP BY под капотом (на примере CSV-файла без БД)?
- Как обеспечить уникальность необязательного поля (например, рабочего телефона) с учётом NULL-значений?
- Что кэшировать, а что нет? Инвалидация кэша при изменении данных.
- Стратегии кэширования тяжёлых вычислений (например, поиска товаров с фильтрами) — cache-aside, проблема cold start.
- Как работает идемпотентность под капотом — где и как хранятся ключи, с чем сравнивается запрос?
👉 Все вопросы из этого собеседования (26)
📣 Хочешь больше собесов?
Подпишись на наш главный канал
#Собес #git_diff
🤔 Как посмотреть, что именно вы изменили в определенном файле git?
💬 Кратко:
Используйте команду
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Как посмотреть, что именно вы изменили в определенном файле git?
💬 Кратко:
Используйте команду
git diff для просмотра изменений. Для конкретного файла:git diff <имя_файла>
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#documentation #http
📚 Все про HTTP
Тут собрано всё, что нужно знать про самый популярный протокол интернета
✓ Все статус-коды с понятными объяснениями
✓ Методы и заголовки
✓ Подборка инструментов для тестирования HTTP
✓ Чёткая инфа про HTTP/3
Перейти к материалу
👉 База вопросов 👉 Новости
📚 Все про HTTP
Тут собрано всё, что нужно знать про самый популярный протокол интернета
✓ Все статус-коды с понятными объяснениями
✓ Методы и заголовки
✓ Подборка инструментов для тестирования HTTP
✓ Чёткая инфа про HTTP/3
Перейти к материалу
👉 База вопросов 👉 Новости
#Собес #request #response #framework
🤔 Как обрабатывается веб-запрос в фреймворке (Laravel/Yii2) — от Nginx через PHP-FPM до контроллера и возврата JSON-ответа?
💬 Кратко:
Веб-запрос проходит через несколько уровней обработки. Сначала Nginx принимает запрос и передает его PHP-FPM через FastCGI протокол. PHP-FPM запускает PHP-процесс, который загружает фреймворк. Фреймворк анализирует маршрут, находит соответствующий контроллер и выполняет его метод. Контроллер обрабатывает данные и возвращает JSON-ответ, который проходит обратно через всю цепочку к клиенту.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Как обрабатывается веб-запрос в фреймворке (Laravel/Yii2) — от Nginx через PHP-FPM до контроллера и возврата JSON-ответа?
💬 Кратко:
Веб-запрос проходит через несколько уровней обработки. Сначала Nginx принимает запрос и передает его PHP-FPM через FastCGI протокол. PHP-FPM запускает PHP-процесс, который загружает фреймворк. Фреймворк анализирует маршрут, находит соответствующий контроллер и выполняет его метод. Контроллер обрабатывает данные и возвращает JSON-ответ, который проходит обратно через всю цепочку к клиенту.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Оптимизация Docker-образов с помощью dive
Недавно прогнал наш dev-образ через утилиту dive
Судя по результатам, надо образ на диету садить)
На скрине видно что размер образа разожрался больше гига, можем походить по слоям, увидеть сколько каждый весит, куда он добавляет файлы (что довольно любопытно наблюдать)
Так я увидел что примерно половина образа это различные системные библиотеки в
Большой размер образа приводит к тому, что место в registry быстро забивается, кэш слоев хуже переиспользуется, долго пулится в CI/CD
Как можно исправить ситуацию?
- Видно, что в разделе Potential wasted space указано 75 МБ, скорее всего остались артефакты apt, которые можно удалить
- Можно использовать multistage, что чуть улучшит кэширование, и мастхев для продовых образов
🚀 Пост Guru PHP: @msavin_dev
Недавно прогнал наш dev-образ через утилиту dive
Судя по результатам, надо образ на диету садить)
На скрине видно что размер образа разожрался больше гига, можем походить по слоям, увидеть сколько каждый весит, куда он добавляет файлы (что довольно любопытно наблюдать)
Так я увидел что примерно половина образа это различные системные библиотеки в
/usr/bin/lib, например zsh занимает 205МББольшой размер образа приводит к тому, что место в registry быстро забивается, кэш слоев хуже переиспользуется, долго пулится в CI/CD
Как можно исправить ситуацию?
- Видно, что в разделе Potential wasted space указано 75 МБ, скорее всего остались артефакты apt, которые можно удалить
- Можно использовать multistage, что чуть улучшит кэширование, и мастхев для продовых образов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#Собес #microservices #monolithic #architecture
🤔 Middle+ PHP Backend-разработчик в компанию Астро волга
Техническое собеседование PHP-разработчика. ЗП от 165к с фокусом на архитектуру веб-приложений, работу с базами данных и брокерами сообщений
💬 Вопросы:
- Что такое DDD и гексагональная архитектура?
- Как реализовать Singleton?
- Какие шаблоны проектирования используете?
- Что такое партиционирование и как оно работает?
- Разница между горизонтальным и вертикальным масштабированием.
👉 Все вопросы из этого собеседования (31)
📣 Хочешь больше собесов?
Подпишись на наш главный канал
🤔 Middle+ PHP Backend-разработчик в компанию Астро волга
Техническое собеседование PHP-разработчика. ЗП от 165к с фокусом на архитектуру веб-приложений, работу с базами данных и брокерами сообщений
💬 Вопросы:
- Что такое DDD и гексагональная архитектура?
- Как реализовать Singleton?
- Какие шаблоны проектирования используете?
- Что такое партиционирование и как оно работает?
- Разница между горизонтальным и вертикальным масштабированием.
👉 Все вопросы из этого собеседования (31)
📣 Хочешь больше собесов?
Подпишись на наш главный канал
#Собес #sql #optimization #index
🤔 Как оптимизировать SQL-запрос, выбирающий все посты пользователей с >500 подписчиков (с джойнами и проверкой NULL)?
💬 Кратко:
- Добавить индексы на
- Использовать
- Заменить подзапросы на
- Применить покрывающий индекс.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Как оптимизировать SQL-запрос, выбирающий все посты пользователей с >500 подписчиков (с джойнами и проверкой NULL)?
💬 Кратко:
- Добавить индексы на
subscribers_count и user_id.- Использовать
INNER JOIN вместо LEFT JOIN, если NULL не нужны.- Заменить подзапросы на
JOIN.- Применить покрывающий индекс.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#podcast #всё
📚 TeachMeSkills IT-школа
Это серия выпусков от "TeachMeSkills Школа программирования"
Речь пойдет об актуальные направления и технологии в IT; перспективы роста начинающих специалистов; холиварные топики из жизни разработчиков.
Перейти к материалу
👉 База вопросов 👉 Новости
📚 TeachMeSkills IT-школа
Это серия выпусков от "TeachMeSkills Школа программирования"
Речь пойдет об актуальные направления и технологии в IT; перспективы роста начинающих специалистов; холиварные топики из жизни разработчиков.
Перейти к материалу
👉 База вопросов 👉 Новости
#Собес #inheritance #extends #base_class
🤔 Как используется наследование в PHP?
💬 Кратко:
Наследование в PHP позволяет одному классу (подклассу) наследовать методы и свойства другого класса (родительского класса). Это позволяет повторно использовать код и создавать иерархические связи между классами, где подклассы могут расширять или изменять функциональность родительского класса, сохраняя при этом общие черты.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Как используется наследование в PHP?
💬 Кратко:
Наследование в PHP позволяет одному классу (подклассу) наследовать методы и свойства другого класса (родительского класса). Это позволяет повторно использовать код и создавать иерархические связи между классами, где подклассы могут расширять или изменять функциональность родительского класса, сохраняя при этом общие черты.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Закон протекающих абстракций и почему он портит вам tail latency
Закон протекающих абстракций говорит о том, что любая удобная обёртка рано или поздно перестаёт скрывать свою сложность.
Tail latency — это когда запрос, обычно делающийся за 200 ms, внезапно занимает 2 s. Такое поведение ухудшает пользовательский опыт - пользователь может не дождаться и уйти. В распределённой системе эффект еще и усиливается: один затупивший вызов тянет за собой всю цепочку
Почему появляются такие задержки? Сеть потеряла пакет, TCP ушёл в backoff, DNS задумался, GC начал собирать мусор не вовремя, прокси сделал лишний ретрай. В обычном коде всё выглядит гладко, но под нагрузкой эти мелочи превращаются в p95/p99 latency
Как бороться с tail latency? Есть ряд паттернов:
- хеджированные запросы - отправляем запрос на несколько нод сразу, и берем ответ от первого
- request coalescing - одинаковый запросы "склеиваем" в один, чтоб не грузить нижние слои системы
- deadline propagation - каждый участок запроса знает сколько у него осталось времени на выполнение
- circuit breakers - если модуль стал отдавать много ошибок, можно отрезать часть запросов от него, чтоб дать ему восстановиться
- latency-aware load balancing - раскидывать нагрузку не round-robin'ом, а в зависимости от состояния нод
Каждый паттерн — отдельная история, но вместе они сильно уменьшают хвосты.
🚀 Пост Guru PHP: @msavin_dev
Закон протекающих абстракций говорит о том, что любая удобная обёртка рано или поздно перестаёт скрывать свою сложность.
Tail latency — это когда запрос, обычно делающийся за 200 ms, внезапно занимает 2 s. Такое поведение ухудшает пользовательский опыт - пользователь может не дождаться и уйти. В распределённой системе эффект еще и усиливается: один затупивший вызов тянет за собой всю цепочку
Почему появляются такие задержки? Сеть потеряла пакет, TCP ушёл в backoff, DNS задумался, GC начал собирать мусор не вовремя, прокси сделал лишний ретрай. В обычном коде всё выглядит гладко, но под нагрузкой эти мелочи превращаются в p95/p99 latency
Как бороться с tail latency? Есть ряд паттернов:
- хеджированные запросы - отправляем запрос на несколько нод сразу, и берем ответ от первого
- request coalescing - одинаковый запросы "склеиваем" в один, чтоб не грузить нижние слои системы
- deadline propagation - каждый участок запроса знает сколько у него осталось времени на выполнение
- circuit breakers - если модуль стал отдавать много ошибок, можно отрезать часть запросов от него, чтоб дать ему восстановиться
- latency-aware load balancing - раскидывать нагрузку не round-robin'ом, а в зависимости от состояния нод
Каждый паттерн — отдельная история, но вместе они сильно уменьшают хвосты.
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Mikhail Savin
Ментор PHP backend GitHub: https://github.com/savinmikhail
#Собес #microservices #monolithic #architecture
🤔 Middle+ PHP Backend-разработчик в компанию Астро волга
Техническое собеседование PHP-разработчика. ЗП от 165к с фокусом на архитектуру веб-приложений, работу с базами данных и брокерами сообщений
💬 Вопросы:
- Как бы вы описали паттерн проектирования Singleton?
- Что такое трейты в PHP?
- Что такое Dockerfile?
- Объясните, что такое обмен (Exchange)?
- Что такое микросервисная архитектура?
👉 Все вопросы из этого собеседования (31)
📣 Хочешь больше собесов?
Подпишись на наш главный канал
🤔 Middle+ PHP Backend-разработчик в компанию Астро волга
Техническое собеседование PHP-разработчика. ЗП от 165к с фокусом на архитектуру веб-приложений, работу с базами данных и брокерами сообщений
💬 Вопросы:
- Как бы вы описали паттерн проектирования Singleton?
- Что такое трейты в PHP?
- Что такое Dockerfile?
- Объясните, что такое обмен (Exchange)?
- Что такое микросервисная архитектура?
👉 Все вопросы из этого собеседования (31)
📣 Хочешь больше собесов?
Подпишись на наш главный канал
#Собес #git_хуки
🤔 Из чего состоят “хуки” в Git?
💬 Кратко:
Хуки в Git — это скрипты, которые выполняются автоматически при определённых действиях в репозитории, таких как коммиты, слияния или пуши. Они находятся в директории
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Из чего состоят “хуки” в Git?
💬 Кратко:
Хуки в Git — это скрипты, которые выполняются автоматически при определённых действиях в репозитории, таких как коммиты, слияния или пуши. Они находятся в директории
.git/hooks и могут быть настроены для выполнения различных задач.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#repository #кибербезопасность
📚 Структурированный 90-дневный план обучения кибербезопасности предназначенный для начинающих специалистов
План обучения, разделённый на ежедневные задания, охватывающие ключевые темы
Перейти к материалу
👉 База вопросов 👉 Новости
📚 Структурированный 90-дневный план обучения кибербезопасности предназначенный для начинающих специалистов
План обучения, разделённый на ежедневные задания, охватывающие ключевые темы
Перейти к материалу
👉 База вопросов 👉 Новости
#Собес #query_builder #request #laravel
🤔 Что такое Query Builder в Laravel?
💬 Кратко:
Query Builder в Laravel — это инструмент, который позволяет строить запросы к базе данных с использованием PHP-кода, избегая необходимости писать SQL-запросы вручную. Он предоставляет удобные методы для создания, выполнения и кэширования запросов.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Что такое Query Builder в Laravel?
💬 Кратко:
Query Builder в Laravel — это инструмент, который позволяет строить запросы к базе данных с использованием PHP-кода, избегая необходимости писать SQL-запросы вручную. Он предоставляет удобные методы для создания, выполнения и кэширования запросов.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🔥1
Blue-Green Deployment
Blue-green — это способ выкатывать новую версию без простоя и практически с мгновенным откатом на старую версию если что-то пошло не так
У вас есть два окружения — blue (текущий прод) и green (новая версия).
Вы обновляете green, прогоняете smoke-тесты, а потом просто переключаете трафик на него.
Переключение обычно занимает миллисекунды — достаточно указать load balancer’у новый бэкенд.
При этом мы имеем такую же простую возможность отката, если что-то все таки пошло не так - переключаем трафик на blue и спокойно правим green
Но есть важный нюанс - база данных и любые другие контракты данных должны быть совместимы между соседними версиями.
Обе версии (blue и green) должны уметь работать с одной и той же схемой БД одновременно. То же самое касается схемы кеша, форматов сообщений, протоколов очередей — разве что здесь можно выкрутиться версионированием ключей.
Blue-green не решает все проблемы, но снимает главный страх релизов:
“если что-то поломается, мы вернём всё назад за секунду”.
🚀 Пост Guru PHP: @msavin_dev
Blue-green — это способ выкатывать новую версию без простоя и практически с мгновенным откатом на старую версию если что-то пошло не так
У вас есть два окружения — blue (текущий прод) и green (новая версия).
Вы обновляете green, прогоняете smoke-тесты, а потом просто переключаете трафик на него.
Переключение обычно занимает миллисекунды — достаточно указать load balancer’у новый бэкенд.
При этом мы имеем такую же простую возможность отката, если что-то все таки пошло не так - переключаем трафик на blue и спокойно правим green
Но есть важный нюанс - база данных и любые другие контракты данных должны быть совместимы между соседними версиями.
Обе версии (blue и green) должны уметь работать с одной и той же схемой БД одновременно. То же самое касается схемы кеша, форматов сообщений, протоколов очередей — разве что здесь можно выкрутиться версионированием ключей.
Blue-green не решает все проблемы, но снимает главный страх релизов:
“если что-то поломается, мы вернём всё назад за секунду”.
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Mikhail Savin
Ментор PHP backend GitHub: https://github.com/savinmikhail
#Собес #design #patterns #strategy
🤔 Какие паттерны проектирования знаете? Где применяли?
💬 Кратко:
Паттерны проектирования - это проверенные решения распространенных проблем в разработке. Адаптер используется для совместимости разных интерфейсов, Фабрика создает объекты без указания точного класса, Стратегия позволяет менять алгоритмы поведения, Observer реализует систему событий. Эти паттерны помогают создавать гибкий, поддерживаемый и масштабируемый код в реальных проектах.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Какие паттерны проектирования знаете? Где применяли?
💬 Кратко:
Паттерны проектирования - это проверенные решения распространенных проблем в разработке. Адаптер используется для совместимости разных интерфейсов, Фабрика создает объекты без указания точного класса, Стратегия позволяет менять алгоритмы поведения, Observer реализует систему событий. Эти паттерны помогают создавать гибкий, поддерживаемый и масштабируемый код в реальных проектах.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#Собес #inheritance #table #data_hierarchy
🤔 Что такое таблицы с наследованием в PostgreSQL и зачем они нужны?
💬 Кратко:
В PostgreSQL таблицы могут наследовать структуру и данные другой таблицы, что полезно для разделения данных или создания иерархий. Например, можно создать таблицы для разных типов пользователей, которые наследуют общие поля из родительской таблицы.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Что такое таблицы с наследованием в PostgreSQL и зачем они нужны?
💬 Кратко:
В PostgreSQL таблицы могут наследовать структуру и данные другой таблицы, что полезно для разделения данных или создания иерархий. Например, можно создать таблицы для разных типов пользователей, которые наследуют общие поля из родительской таблицы.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#course #ии-помощник
📚 Курс PHP
Изучите язык программирования PHP в интерактивной онлайн среде. Десятки заданий прямо в браузере с поддержкой ИИ-ассистента
Перейти к материалу
👉 База вопросов 👉 Новости
📚 Курс PHP
Изучите язык программирования PHP в интерактивной онлайн среде. Десятки заданий прямо в браузере с поддержкой ИИ-ассистента
Перейти к материалу
👉 База вопросов 👉 Новости