TGViewer
Channel Public Channel
PHP Backend | YeaHub

PHP Backend | YeaHub

@yeahub_php_backend

Теория, подготовка к интервью и курсы для PHP разработчиков

YeaHub — это платформа для IT-специалистов, объединяющая обучение, карьерный рост, развитие и сообщество единомышленников.

Платформа: https://yeahub.ru

Для связи: @ruslan_kuyanets
Subscribers
376
Photos
296
Videos
10
Links
602

Showing posts older than #482 · Back to latest

Older Posts 20 shown
Post #481 163
#Собес #upload #file #form
🤔 Как PHP обрабатывает загрузку файлов?

💬 Кратко:

PHP обрабатывает загрузку файлов через суперглобальный массив $_FILES. Файл отправляется через форму с атрибутом enctype="multipart/form-data", и PHP сохраняет информацию о загружаемом файле в $_FILES, включая имя файла, тип и путь.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Post #479 194
#Собес #inheritance #table #data_hierarchy
🤔 Что такое таблицы с наследованием в PostgreSQL и зачем они нужны?

💬 Кратко:

В PostgreSQL таблицы могут наследовать структуру и данные другой таблицы, что полезно для разделения данных или создания иерархий. Например, можно создать таблицы для разных типов пользователей, которые наследуют общие поля из родительской таблицы.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Post #478 187
#Собес #design #patterns #strategy
🤔 Какие паттерны проектирования знаете? Где применяли?

💬 Кратко:

Паттерны проектирования - это проверенные решения распространенных проблем в разработке. Адаптер используется для совместимости разных интерфейсов, Фабрика создает объекты без указания точного класса, Стратегия позволяет менять алгоритмы поведения, Observer реализует систему событий. Эти паттерны помогают создавать гибкий, поддерживаемый и масштабируемый код в реальных проектах.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Post #477 179
Blue-Green Deployment

Blue-green — это способ выкатывать новую версию без простоя и практически с мгновенным откатом на старую версию если что-то пошло не так

У вас есть два окружения — blue (текущий прод) и green (новая версия).
Вы обновляете green, прогоняете smoke-тесты, а потом просто переключаете трафик на него.
Переключение обычно занимает миллисекунды — достаточно указать load balancer’у новый бэкенд.
При этом мы имеем такую же простую возможность отката, если что-то все таки пошло не так - переключаем трафик на blue и спокойно правим green

Но есть важный нюанс - база данных и любые другие контракты данных должны быть совместимы между соседними версиями.
Обе версии (blue и green) должны уметь работать с одной и той же схемой БД одновременно. То же самое касается схемы кеша, форматов сообщений, протоколов очередей — разве что здесь можно выкрутиться версионированием ключей.

Blue-green не решает все проблемы, но снимает главный страх релизов:
“если что-то поломается, мы вернём всё назад за секунду”.

🚀 Пост Guru PHP: @msavin_dev
Telegram Mikhail Savin Ментор PHP backend: https://mentoring.msavin-dev.ru/
  • 👍 1
Post #476 167
#Собес #query_builder #request #laravel
🤔 Что такое Query Builder в Laravel?

💬 Кратко:

Query Builder в Laravel — это инструмент, который позволяет строить запросы к базе данных с использованием PHP-кода, избегая необходимости писать SQL-запросы вручную. Он предоставляет удобные методы для создания, выполнения и кэширования запросов.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
  • 🔥 1
Post #475 221
#repository #кибербезопасность
📚 Структурированный 90-дневный план обучения кибербезопасности предназначенный для начинающих специалистов

План обучения, разделённый на ежедневные задания, охватывающие ключевые темы

Перейти к материалу

👉 База вопросов 👉 Новости
Post #474 198
#Собес #git_хуки
🤔 Из чего состоят “хуки” в Git?

💬 Кратко:

Хуки в Git — это скрипты, которые выполняются автоматически при определённых действиях в репозитории, таких как коммиты, слияния или пуши. Они находятся в директории .git/hooks и могут быть настроены для выполнения различных задач.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Post #473 186
#Собес #microservices #monolithic #architecture

🤔 Middle+ PHP Backend-разработчик в компанию Астро волга

Техническое собеседование PHP-разработчика. ЗП от 165к с фокусом на архитектуру веб-приложений, работу с базами данных и брокерами сообщений

💬 Вопросы:

- Как бы вы описали паттерн проектирования Singleton?

- Что такое трейты в PHP?

- Что такое Dockerfile?

- Объясните, что такое обмен (Exchange)?

- Что такое микросервисная архитектура?

👉 Все вопросы из этого собеседования (31)

📣 Хочешь больше собесов?
Подпишись на наш главный канал
Post #472 176
Закон протекающих абстракций и почему он портит вам 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
Telegram Mikhail Savin Ментор PHP backend: https://mentoring.msavin-dev.ru/
Post #471 179
#Собес #inheritance #extends #base_class
🤔 Как используется наследование в PHP?

💬 Кратко:

Наследование в PHP позволяет одному классу (подклассу) наследовать методы и свойства другого класса (родительского класса). Это позволяет повторно использовать код и создавать иерархические связи между классами, где подклассы могут расширять или изменять функциональность родительского класса, сохраняя при этом общие черты.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Post #470 210
#podcast #всё
📚 TeachMeSkills IT-школа

Это серия выпусков от "TeachMeSkills Школа программирования"
Речь пойдет об актуальные направления и технологии в IT; перспективы роста начинающих специалистов; холиварные топики из жизни разработчиков.


Перейти к материалу

👉 База вопросов 👉 Новости
Post #469 200
#Собес #sql #optimization #index
🤔 Как оптимизировать SQL-запрос, выбирающий все посты пользователей с >500 подписчиков (с джойнами и проверкой NULL)?

💬 Кратко:

- Добавить индексы на subscribers_count и user_id.
- Использовать INNER JOIN вместо LEFT JOIN, если NULL не нужны.
- Заменить подзапросы на JOIN.
- Применить покрывающий индекс.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Post #468 203
#Собес #microservices #monolithic #architecture

🤔 Middle+ PHP Backend-разработчик в компанию Астро волга

Техническое собеседование PHP-разработчика. ЗП от 165к с фокусом на архитектуру веб-приложений, работу с базами данных и брокерами сообщений

💬 Вопросы:

- Что такое DDD и гексагональная архитектура?

- Как реализовать Singleton?

- Какие шаблоны проектирования используете?

- Что такое партиционирование и как оно работает?

- Разница между горизонтальным и вертикальным масштабированием.

👉 Все вопросы из этого собеседования (31)

📣 Хочешь больше собесов?
Подпишись на наш главный канал
Post #467 179
Оптимизация Docker-образов с помощью dive

Недавно прогнал наш dev-образ через утилиту dive
Судя по результатам, надо образ на диету садить)

На скрине видно что размер образа разожрался больше гига, можем походить по слоям, увидеть сколько каждый весит, куда он добавляет файлы (что довольно любопытно наблюдать)

Так я увидел что примерно половина образа это различные системные библиотеки в /usr/bin/lib, например zsh занимает 205МБ

Большой размер образа приводит к тому, что место в registry быстро забивается, кэш слоев хуже переиспользуется, долго пулится в CI/CD

Как можно исправить ситуацию?

- Видно, что в разделе Potential wasted space указано 75 МБ, скорее всего остались артефакты apt, которые можно удалить

- Можно использовать multistage, что чуть улучшит кэширование, и мастхев для продовых образов

🚀 Пост Guru PHP: @msavin_dev
  • ❤ 1
Post #466 209
#Собес #request #response #framework
🤔 Как обрабатывается веб-запрос в фреймворке (Laravel/Yii2) — от Nginx через PHP-FPM до контроллера и возврата JSON-ответа?

💬 Кратко:

Веб-запрос проходит через несколько уровней обработки. Сначала Nginx принимает запрос и передает его PHP-FPM через FastCGI протокол. PHP-FPM запускает PHP-процесс, который загружает фреймворк. Фреймворк анализирует маршрут, находит соответствующий контроллер и выполняет его метод. Контроллер обрабатывает данные и возвращает JSON-ответ, который проходит обратно через всю цепочку к клиенту.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Post #465 202
#documentation #http
📚 Все про HTTP

Тут собрано всё, что нужно знать про самый популярный протокол интернета

✓ Все статус-коды с понятными объяснениями
✓ Методы и заголовки
✓ Подборка инструментов для тестирования HTTP
✓ Чёткая инфа про HTTP/3

Перейти к материалу

👉 База вопросов 👉 Новости
Post #464 186
#Собес #git_diff
🤔 Как посмотреть, что именно вы изменили в определенном файле git?

💬 Кратко:

Используйте команду git diff для просмотра изменений. Для конкретного файла:
git diff <имя_файла>


📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Post #463 191
#Собес #postgres #sql #php

🤔 Middle PHP разработчик в Анлимитед Продакшн

Техническое собеседование. Вилка: от 165к. Собеседование с фокусом на архитектуру веб-приложений, принципы SOLID, работу с базами данных PostgreSQL и понимание основ безопасности API.

💬 Вопросы:

- Алгоритмы агрегации данных — как работает GROUP BY под капотом (на примере CSV-файла без БД)?

- Как обеспечить уникальность необязательного поля (например, рабочего телефона) с учётом NULL-значений?

- Что кэшировать, а что нет? Инвалидация кэша при изменении данных.

- Стратегии кэширования тяжёлых вычислений (например, поиска товаров с фильтрами) — cache-aside, проблема cold start.

- Как работает идемпотентность под капотом — где и как хранятся ключи, с чем сравнивается запрос?

👉 Все вопросы из этого собеседования (26)

📣 Хочешь больше собесов?
Подпишись на наш главный канал
Post #462 161
Функция array_column может доставать не только колонки массива, как казалось бы, но и свойства объектов:


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"
// }


А вы знали про такое?

🚀 Пост Guru PHP: @msavin_dev
www.php.net PHP: array_column - Manual Return the values from a single column in the input array
  • 👍 2
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →