PHP Backend | YeaHub – Telegram
PHP Backend | YeaHub
388 subscribers
234 photos
10 videos
428 links
Теория, подготовка к интервью и курсы для PHP разработчиков

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

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

Для связи: @ruslan_kuyanets
Download Telegram
#Собес #postgres
🤔 Какие существуют типы индексов в PostgreSQLu когда их использовать?

💬 Кратко:
PostgreSQL поддерживает несколько типов индексов: B-Tree, Hash, GIN, GiST, BRIN, и SP-GiST. B-Tree подходит для поиска равенства и диапазона, Hash - только для равенства, GIN и GiST - для полнотекстового поиска, а BRIN оптимален для больших таблиц с последовательными данными.

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

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЛитКод
Задача: 721. Accounts Merge

Дан список аккаунтов, в котором каждый элемент accounts[i] - это список строк, где первый элемент accounts[i][0] - это имя, а остальные элементы - это email, представляющие электронную почту аккаунта. Теперь мы хотим объединить эти аккаунты. Два аккаунта определенно принадлежат одному человеку, если у обоих аккаунтов есть какой-то общий email. Обратите внимание, что даже если два аккаунта имеют одинаковое имя, они могут принадлежать разным людям, поскольку у людей могут быть одинаковые имена. Изначально у человека может быть любое количество счетов, но все его счета обязательно должны иметь одинаковое имя. После объединения счетов верните счета в следующем формате: первый элемент каждого счета - имя, а остальные элементы - электронные письма в отсортированном порядке. Сами аккаунты могут быть возвращены в любом порядке.

Пример:
nput: accounts = [["John","johnsmith@mail.com","john_newyork@mail.com"],["John","johnsmith@mail.com","john00@mail.com"],["Mary","mary@mail.com"],["John","johnnybravo@mail.com"]]
Output: [["John","john00@mail.com","john_newyork@mail.com","johnsmith@mail.com"],["Mary","mary@mail.com"],["John","johnnybravo@mail.com"]]


👨‍💻 Алгоритм:

1⃣Создайте граф, в котором узлы представляют email-адреса, а ребра соединяют email-адреса, принадлежащие одному аккаунту.

2⃣Пройдите по графу, чтобы найти все связанные компоненты, которые представляют объединенные аккаунты.

3⃣Для каждой связанной компоненты, соберите email-адреса, отсортируйте их и добавьте имя пользователя в начало списка.

😎 Решение:
function accountsMerge($accounts) {
$emailToName = [];
$graph = [];

foreach ($accounts as $account) {
$name = $account[0];
$firstEmail = $account[1];
foreach (array_slice($account, 1) as $email) {
if (!isset($graph[$firstEmail])) $graph[$firstEmail] = [];
if (!isset($graph[$email])) $graph[$email] = [];
$graph[$firstEmail][] = $email;
$graph[$email][] = $firstEmail;
$emailToName[$email] = $name;
}
}

$seen = [];
$mergedAccounts = [];

foreach ($emailToName as $email => $name) {
if (!isset($seen[$email])) {
$emails = [];
$stack = [$email];
while (!empty($stack)) {
$node = array_pop($stack);
if (!isset($seen[$node])) {
$seen[$node] = true;
$emails[] = $node;
foreach ($graph[$node] as $neighbor) {
$stack[] = $neighbor;
}
}
}
sort($emails);
$mergedAccounts[] = array_merge([$name], $emails);
}
}

return $mergedAccounts;
}


👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЛитКод
Задача: 494. Target Sum

Вам дан массив целых чисел nums и целое число target.

Вы хотите создать выражение из nums, добавляя один из символов '+' или '-' перед каждым числом в nums, а затем объединяя все числа.
Например, если nums = [2, 1], вы можете добавить '+' перед 2 и '-' перед 1, а затем объединить их, чтобы получить выражение "+2-1".
Верните количество различных выражений, которые можно построить и которые оцениваются в target.

Пример:
Input: nums = [1,1,1,1,1], target = 3
Output: 5
Explanation: There are 5 ways to assign symbols to make the sum of nums be target 3.
-1 + 1 + 1 + 1 + 1 = 3
+1 - 1 + 1 + 1 + 1 = 3
+1 + 1 - 1 + 1 + 1 = 3
+1 + 1 + 1 - 1 + 1 = 3
+1 + 1 + 1 + 1 - 1 = 3


👨‍💻 Алгоритм:

1⃣Инициализация и вызов рекурсивной функции
Создайте переменную для хранения количества решений (count). Вызовите рекурсивную функцию calculate с начальными параметрами (nums, начальный индекс 0, начальная сумма 0, и target).

2⃣Рекурсивная функция calculate
Если текущий индекс равен длине массива, проверьте, равна ли текущая сумма значению target. Если да, увеличьте счетчик решений. В противном случае, вызовите функцию рекурсивно дважды: добавляя и вычитая текущее значение из суммы.

3⃣Возврат результата
После завершения всех рекурсивных вызовов верните значение счетчика решений.

😎 Решение:
class Solution {
private $count = 0;

function findTargetSumWays($nums, $S) {
$this->calculate($nums, 0, 0, $S);
return $this->count;
}

private function calculate($nums, $i, $sum, $S) {
if ($i == count($nums)) {
if ($sum == $S) {
$this->count++;
}
} else {
$this->calculate($nums, $i + 1, $sum + $nums[$i], $S);
$this->calculate($nums, $i + 1, $sum - $nums[$i], $S);
}
}
}


👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#полезное
🥱 Совет по Laravel

Используй response()->file(), чтобы отображать файлы в браузере вместо их скачивания

Отлично подходит для показа PDF или документов прямо внутри страницы.

Документация: https://laravel.com/docs/12.x/responses#file-responses

Обрати внимание: поддержка зависит от браузера и пользовательских настроек.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #postgres
🤔 Что такое таблица в PostgreSQL и как её создать?

💬 Кратко:
Таблица в PostgreSQL — это структура, используемая для хранения данных в виде строк и столбцов. Для создания таблицы используется команда CREATE TABLE имя таблицы (список_ столбцов) ; .

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

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#полезное
😵 Pest v4 уже здесь. Теперь с поддержкой браузерного тестирования

Браузерные тесты, которые ощущаются как unit-тесты: готовые к использованию в Laravel, работающие на Playwright, сверхбыстрые благодаря параллельному запуску, со встроенными smoke- и визуальными регрессионными тестами

https://pestphp.com/docs/pest-v4-is-here-now-with-browser-testing

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😵‍💫 Когда-нибудь приходилось делать foreach по КОНСТАНТАМ PHP-класса?

Все константы можно получить в массив с помощью ReflectionClass

На скриншотах пример, как достали все Render Hooks у Filament

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #postgres
🤔 Как создать новую базу данных в PostgreSQL?

💬 Кратко:
B PostgreSQL новую базу данных можно создать с помощью команды SQL CREATE DATABASE имя_базы; или используя утилиту командной строки createdb имя_базы


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

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👨‍💻 Нужно защитить чувствительные роуты, например, публикацию репозиториев или удаление аккаунтов?

Добавь к маршруту middleware password.confirm. Пользователю придётся заново ввести пароль перед продолжением.

Документация: https://laravel.com/docs/12.x/authentication#password-confirmation-protecting-routes

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😎 Совет по PHP

Если нужно проверить, является ли строка корректным кликабельным URL, можно использовать функцию filter_var() с флагом FILTER_VALIDATE_URL.

Упрощённый пример — добавить префикс "https://" в случае, если пользователь его забыл.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #postgres
🤔 Что такое PostgreSQL каковы его основные особенности?

💬 Кратко:
PostgreSQL — это мощная обьектно-реляционная система управления базами данных с открытым исходным кодом. Она поддерживает расширяемость, соответствие стандарту SQL, работу с JSON, многоверсионное управление параллелизмом (MVCC) и транзакции с ACID-свойствами.

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

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
Метод toRawSql в Laravel возвращает «сырой» SQL-запрос со всеми подставленными параметрами. Это удобный способ быстро увидеть сгенерированный SQL, а также скопировать и вставить запрос в ваше приложение для работы с БД

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#полезное
😊 Pulse Boson PHP #1
Boson PHP — это платформа для создания кроссплатформенных настольных приложений, которая позволяет использовать веб-технологии (PHP, JavaScript, HTML, CSS) для создания native-приложений. Она сочетает в себе интерпретатор PHP и движок WebView, что позволяет собирать приложения в единый исполняемый файл для Windows, Linux и macOS.
https://habr.com/ru/articles/944716/

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#полезное
😇 Сегодня узнал про array_column в PHP

И оно работает даже с объектами, так что вот простой способ получить все значения из backed enum…

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝1
#Собес #git
🤔 Что такое команды git reset -mixed и git merge - abort?

💬 Кратко:
git reset --mixed : отменяет изменения, которые были добавлены в индекс, но сохраняет изменения в рабочем каталоге.
git merge --abort : отменяет слияние, которое в данный момент находится в процессе, и возвращает репозиторий в состояние до начала слияния.

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

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👋 Нужно проверить, что во входных данных существуют ключи массива?

Используйте required_array_keys, чтобы убедиться, что указанные ключи присутствуют в данных массива, идеально подходит для API-эндпоинтов, где ожидается чёткая структура.

Документация: https://laravel.com/docs/12.x/validation#rule-required-array-keys

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🤯 Speedtest Tracker — настрой свой личный мониторинг скорости интернета

Хочешь знать, обманывает ли тебя твой провайдер? Этот self-hosted проект на Laravel сам будет запускать speedtest и строить графики: скорость загрузки/отдачи, пинг, потери пакетов — всё сохраняется в базе.

Что умеет:
🔴 автоматические проверки по расписанию
🔴 графики и история скорости за дни и недели
🔴 уведомления, если скорость падает
🔴 запуск через Docker за пару минут
🔴 удобный веб-интерфейс + API

Последняя версия (v1.6.5) закрыла уязвимость и улучшила поддержку ARM-систем.
Поддерживаются InfluxDB, Telegram-оповещения, кастомные сервера speedtest и т.д.

Готов к установке:
git clone + docker-compose up -d — и трекер уже в браузере.
GitHub

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😱 WaterCrawl — продвинутая платформа для веб-краулинга и подготовки данных под LLM

Если нужно собрать и структурировать контент с сайтов для ИИ — это мощный инструмент.

В основе:
🔵 Django + Scrapy + Celery
🔵 Асинхронный краулинг, API и UI
🔵 Скриншоты, PDF, JS-рендер, SSE

Возможности:
🟠 Быстрый запуск через Docker (`docker compose up`)
🟠 Интеграции с Dify, n8n, Langflow
🟠 Пакетная отправка запросов через REST API
🟠 SDK для Python, Go, Node, PHP
Репозитории

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #git
🤔 Как вы находите коммит, который что-то нарушил после операции слияния?

💬 Кратко:
Для поиска коммита, который нарушил код после слияния, можно использовать команду git bisect . Этот инструмент помогает найти коммит, который вызывает проблему, путем бинарного поиска.

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

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM