PHP Backend | YeaHub
231 subscribers
135 photos
7 videos
241 links
Теория, подготовка к интервью и курсы для PHP разработчиков

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

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

Для связи: @ruslan_kuyanets
Download Telegram
🤔 Что означает аббревиатура PDO в контексте PHP?
Anonymous Quiz
7%
PHP Data Oriented
43%
PHP Database Object
43%
PHP Data Objects
7%
PHP Database Oriented
#ЛитКод
Задача: 616. Add Bold Tag in String

Вам дана строка s и массив строк words. Вы должны добавить закрытую пару полужирных тегов <b> и </b>, чтобы обернуть подстроки в s, которые существуют в words. Если две такие подстроки пересекаются, вы должны обернуть их вместе только одной парой закрытых полужирных тегов. Если две подстроки, обернутые полужирными тегами, идут подряд, вы должны объединить их. Верните s после добавления полужирных тегов.

Пример:
Input: s = "abcxyz123", words = ["abc","123"]
Output: "<b>abc</b>xyz<b>123</b>"


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

1⃣Найдите все позиции вхождений подстрок из words в строку s и пометьте эти позиции для выделения тегами <b> и </b>.

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

3⃣Постройте новую строку s, добавляя теги <b> и </b> в определенные позиции.

😎 Решение:
function addBoldTag($s, $words) {
$bold = array_fill(0, strlen($s), false);

foreach ($words as $word) {
$pos = strpos($s, $word);
while ($pos !== false) {
for ($i = $pos; $i < $pos + strlen($word); $i++) {
$bold[$i] = true;
}
$pos = strpos($s, $word, $pos + 1);
}
}

$result = "";
$i = 0;
while ($i < strlen($s)) {
if ($bold[$i]) {
$result .= "<b>";
while ($i < strlen($s) && $bold[$i]) {
$result .= $s[$i];
$i++;
}
$result .= "</b>";
} else {
$result .= $s[$i];
$i++;
}
}

return $result;
}


👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЧеКак
🤔 Как переопределить хранение сессий?

Хранение сессий можно переопределить путём изменения способа их хранения:
Файлы: хранение на локальной файловой системе.
Базы данных: использование реляционных баз для хранения сессий, что упрощает их масштабирование.
Кэш: хранение в Redis, Memcached для быстрого доступа.
Для настройки нужно изменить конфигурацию приложения или middleware, например, в Django, Flask или Spring.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЧеКак
🤔 Что известно о MVC?

Это архитектурный шаблон, который разделяет приложение на три компонента:
🟠Model: управляет данными и бизнес-логикой.
🟠View: отвечает за отображение данных пользователю.
🟠Controller: обрабатывает пользовательский ввод, связывает Model и View.
Это разделение упрощает разработку, тестирование и поддержку приложения.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
#Вакансии
👨‍💻 Backend PHP developer (Middle)

Локация: Удаленно
Компания: Igaming-Soft
ЗП: от 2 500 до 3 000 $
Занятость: Полная
Локация: Кипр
Трудоустройство: самозанятый
Сфера: GAMBLING

🚩Требования
🔵 Опыт работы с php 7+
🔵Опыт разработки коммерческих продуктов
🔵Понимание ООП, алгоритмов и структур данных
🔵Опыт работы со сторонними API и проектирование REST API
🔵Опыт интеграции платежных систем
🔵Базовые шаблоны проектирования
🔵Опыт работы с GIT, работа с ветками, чистота веток
🔵Опыт работы с MySQL. Агрегаты, джоины, запросы от руки. Важно уметь писать сложные запросы без фреймворков и шаблонов.
🔵консоль (bash), Linux или WSL
🔵Опыт удаленной разработки, работы в команде

🚩Будет плюсом
🔵Опыт работы с высоконагруженными системами
🔵Опыт работы с Websocket
🔵Опыт работы с Docker и/или Docker Swarm
🔵Инструменты Jira, Gitlab/Github, git flow

​​​​​​​​​​​​​💬 Резюме отправлять: @Nbagama

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЧеКак
🤔 Какую проблему решает декоратор?

Декоратор позволяет добавлять новую функциональность к существующему объекту или функции без изменения их исходного кода.
🟠Это решает проблему модификации поведения без нарушения принципа открытости/закрытости (SOLID).
🟠Удобен для добавления динамических изменений, таких как логирование, кэширование или аутентификация.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЧеКак
🤔 Какую проблему решает декоратор?

Декоратор позволяет добавлять новую функциональность к существующему объекту или функции без изменения их исходного кода.
🟠Это решает проблему модификации поведения без нарушения принципа открытости/закрытости (SOLID).
🟠Удобен для добавления динамических изменений, таких как логирование, кэширование или аутентификация.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЧеКак
🤔 Чем composer.json отличается от composer.lock?

🟠composer.json: содержит список зависимостей проекта и их версии (диапазоны).
🟠composer.lock: фиксирует конкретные версии зависимостей, установленных в проекте, для воспроизводимого окружения.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Какой метод используется для удаления куки в PHP?
Anonymous Quiz
33%
remove_cookie()
11%
delete_cookie()
33%
unset_cookie()
22%
setcookie()
#полезное
🛞 Выжимаем максимум скорости из PHP

На Хабр вышла интересная статейка о методах оптимизации производительности PHP-приложений. Речь идёт о технологиях CGI, Apache с mod_php, связка Apache и Nginx, а также PHP-FPM и PHP-PM.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Какой метод используется для изменения прав доступа к файлу в PHP?
Anonymous Quiz
20%
set_mode()
13%
file_chmod()
0%
change_mode()
67%
chmod()
🤔 Какой метод используется для получения информации о типе ресурса в PHP?
Anonymous Quiz
44%
get_resource_type()
38%
resource_type()
0%
type_resource()
19%
get_type_resource()
#ЛитКод
Задача: 605. Can Place Flowers

У вас есть длинная клумба, на которой некоторые участки засажены, а некоторые нет. Однако цветы нельзя сажать на соседних участках.

Дан целочисленный массив flowerbed, содержащий 0 и 1, где 0 означает пустой участок, а 1 — занятый участок, и целое число n. Верните true, если n новых цветов можно посадить на клумбе, не нарушая правила о соседних цветах, и false в противном случае.

Пример
Input: flowerbed = [1,0,0,0,1], n = 1
Output: true


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

1⃣Решение очень простое. Мы можем определить максимальное количество дополнительных цветов, count, которые можно посадить для данного расположения клумбы. Для этого мы проходим по всем элементам массива flowerbed и находим те элементы, которые равны 0 (означает пустую позицию).

2⃣Для каждого такого элемента проверяем, пусты ли обе его соседние позиции. Если да, мы можем посадить цветок в текущей позиции, не нарушая правило соседних цветов. Для первого и последнего элементов не нужно проверять предыдущие и следующие соседние позиции соответственно.

3⃣Если полученное количество count больше или равно n, требуемому количеству цветов для посадки, мы можем посадить n цветов на пустые места, иначе - нет.

😎 Решение:
class Solution {
function canPlaceFlowers($flowerbed, $n) {
$count = 0;
for ($i = 0; $i < count($flowerbed); $i++) {
if ($flowerbed[$i] == 0) {
$emptyLeft = $i == 0 || $flowerbed[$i - 1] == 0;
$emptyRight = $i == count($flowerbed) - 1 || $flowerbed[$i + 1] == 0;
if ($emptyLeft && $emptyRight) {
$flowerbed[$i] = 1;
$count++;
}
}
}
return $count >= $n;
}
}


👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Какой параметр cURL используется для установки аутентификации с использованием логина и пароля?
Anonymous Quiz
0%
CURLOPT_USERPWD
7%
CURLOPT_LOGIN
80%
CURLOPT_AUTH
13%
CURLOPT_CREDENTIALS
This media is not supported in your browser
VIEW IN TELEGRAM
🖥 PHP TUI

Мощный фреймворк для создания консольных приложений на PHP с псевдографическим пользовательским интерфейсом.
Читать статью

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Как работает жизненный цикл запроса в PHP?

Жизненный цикл запроса в РНР начинается с получения НТТР-запроса сервером. Сервер передает запрос РНР-интерпретатору, который выполняет скрипт, взаимодействует с базой данных (если требуется), и генерирует ответ в формате HTML или другого типа контента. Ответ отправляется клиенту, где отображается в браузере. Каждый запрос обрабатывается изолированно, и состояние приложения между запросами не сохраняется без использования сессий или базы данных.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЛитКод
Задача: 621. Task Scheduler

Вам дан массив задач процессора, каждая из которых представлена буквами от A до Z, и время охлаждения, n. Каждый цикл или интервал позволяет завершить одну задачу. Задачи могут быть выполнены в любом порядке, но есть ограничение: одинаковые задачи должны быть разделены не менее чем n интервалами из-за времени охлаждения. Верните минимальное количество интервалов, необходимое для выполнения всех задач.

Пример:
Input: tasks = ["A","A","A","B","B","B"], n = 2
Output: 8


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

1⃣Подсчитайте количество каждой задачи и найдите максимальное количество вхождений (maxFreq).

2⃣Вычислите количество интервалов, необходимых для задач с maxFreq: (maxFreq - 1) * (n + 1) + countMaxFreq, где countMaxFreq - количество задач, имеющих maxFreq.

3⃣Верните максимум между вычисленным значением и длиной массива задач, поскольку некоторые задачи могут заполнять интервал до n.

😎 Решение:
function leastInterval($tasks, $n) {
$taskCounts = array_count_values($tasks);
$maxFreq = max($taskCounts);
$countMaxFreq = count(array_filter($taskCounts, function($count) use ($maxFreq) {
return $count == $maxFreq;
}));

return max(count($tasks), ($maxFreq - 1) * ($n + 1) + $countMaxFreq);
}


👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Какую функцию использовать для установки пользовательского имени сессии?
Anonymous Quiz
9%
rename_session()
9%
change_session_name()
48%
set_session_name()
35%
session_name()
Media is too big
VIEW IN TELEGRAM
#полезное
😊 Генерация документации по API

Если вы ищете самый простой способ сгенерировать документацию по API для вашего приложения на Laravel, которая также будет красивой, попробуйте следующее:

1⃣Установите Scribe через Composer (knuckleswtf/scribe) Это генератор документации API, который использует ваши маршруты, запросы, модели и ресурсы для автоматической генерации.

2⃣Настройте вывод Scribe Установите параметры конфигурации scribe.type в значение 'external_laravel' и scribe.theme в значение 'scalar'.

3⃣Запустите команду php artisan scribe:generate

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

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM