#Собес
🤔 Как бы вы описали паттерн проектирования Singleton?
Паттерн Singleton гарантирует, что класс будет иметь только один экземпляр и предоставляет
глобальную точку доступа к этому экземпляру. Это полезно для классов, которые управляют
общими ресурсами, такими как подключение к базе данных или конфигурации приложения.
👉 Новости 👉 Платформа
Паттерн Singleton гарантирует, что класс будет иметь только один экземпляр и предоставляет
глобальную точку доступа к этому экземпляру. Это полезно для классов, которые управляют
общими ресурсами, такими как подключение к базе данных или конфигурации приложения.
Please open Telegram to view this post
VIEW IN TELEGRAM
#видео
🤔 Какое будущее ждёт PHP?
В этом выпуске мы вместе с Валентином Удальцовым обсуждаем PHP (тот самый язык программирования, про который говорят, что он умирает, а на нём 80% сайтов до сих пор написано).
📱 Смотреть видео
👉 Новости 👉 Платформа
В этом выпуске мы вместе с Валентином Удальцовым обсуждаем PHP (тот самый язык программирования, про который говорят, что он умирает, а на нём 80% сайтов до сих пор написано).
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Какое будущее ждет PHP? / Валентин Удальцов / Организованное программирование / #14
В этом выпуске мы вместе с Валентином Удальцовым, автором канала Пых в Telegram, обсуждаем PHP (тот самый язык программирования, про который говорят, что он умирает, а на нём 80% сайтов до сих пор написано). Поговорим про весь путь его развития — от старых…
#полезное
🥰 MetaStorm — плагин, расширяющий PHPStorm
Этот плагин позволяет расширить поведение PhpStorm и добавить поддержку ваших собственных фреймворков с помощью нескольких строк в файле конфигурации. Он разблокирует ссылки и автодополнение в обычных местах, таких как
Официальный сайт
👉 Новости 👉 Платформа
Этот плагин позволяет расширить поведение PhpStorm и добавить поддержку ваших собственных фреймворков с помощью нескольких строк в файле конфигурации. Он разблокирует ссылки и автодополнение в обычных местах, таких как
method($object,)
, render()
и т. д.Официальный сайт
Please open Telegram to view this post
VIEW IN TELEGRAM
#вакансии
👨💻 PHP Laravel-разработчик в 3ATECH
Компания, разрабатывающая и поддерживающая финтех продукты для глобальных рынков, приглашает PHP-разработчика.
🚩 Условия
🔵 Middle
🔵 От 2000 $
🔵 Удалённая работа
📩 Изучить вакансию
Компания, разрабатывающая и поддерживающая финтех продукты для глобальных рынков, приглашает PHP-разработчика.
📩 Изучить вакансию
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Как реализовать внедрение зависимостей (Dependency Injection) в PHP?
Внедрение зависимостей (DI) в PHP осуществляется путём передачи зависимостей (например,
объектов) в класс через его конструктор или методы. Это позволяет легко тестировать классы и
управлять их зависимостями, избегая жёсткой привязки. Современные фреймворки, такие как
Laravel и Symfony, используют контейнеры зависимостей для автоматического управления
внедрением.
👉 Новости 👉 Платформа
Внедрение зависимостей (DI) в PHP осуществляется путём передачи зависимостей (например,
объектов) в класс через его конструктор или методы. Это позволяет легко тестировать классы и
управлять их зависимостями, избегая жёсткой привязки. Современные фреймворки, такие как
Laravel и Symfony, используют контейнеры зависимостей для автоматического управления
внедрением.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👍 phpCacheAdmin v2
Это веб-админка на PHP для Redis, Memcached, APCu, OPCache и Realpath.
Проект предлагает минималистичный и быстрый доступ к данным, очистку кеша и мониторинг работы сервисов.
🟠 Простая установка без базы данных
🟠 Поддержка Docker
🟠 Гибкая конфигурация через config.php или ENV
Гитхаб
👉 Новости 👉 Платформа
Это веб-админка на PHP для Redis, Memcached, APCu, OPCache и Realpath.
Проект предлагает минималистичный и быстрый доступ к данным, очистку кеша и мониторинг работы сервисов.
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
#полезное
👍 CodeViz
Это расширение для VS Code, которое помогает визуализировать кодовую базу, создавая интерактивные карты от общей архитектуры до детальных вызовов функций.
К тому же, можно задавать вопросы на естественном языке и получать наглядные диаграммы, связанные напрямую с кодом
Поддерживается множество языков программирования, базовые функции бесплатны, а продвинутые доступны по подписке
Тык сюда
👉 Новости 👉 Платформа
Это расширение для VS Code, которое помогает визуализировать кодовую базу, создавая интерактивные карты от общей архитектуры до детальных вызовов функций.
К тому же, можно задавать вопросы на естественном языке и получать наглядные диаграммы, связанные напрямую с кодом
Поддерживается множество языков программирования, базовые функции бесплатны, а продвинутые доступны по подписке
Тык сюда
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Какова цель использования интерфейсов в PHP?
Интерфейсы в РНР используются для создания контракта, который требует от классов реализации
определённых методов, без определения того, как именно эти методы должны быть реализованы.
Это помогает соблюдать принцип абстракции, улучшает организацию кода и упрощает
взаимодействие между различными частями приложения. Интерфейсы также способствуют лучшей
поддерживаемости и расширяемости кода.
👉 Новости 👉 Платформа
Интерфейсы в РНР используются для создания контракта, который требует от классов реализации
определённых методов, без определения того, как именно эти методы должны быть реализованы.
Это помогает соблюдать принцип абстракции, улучшает организацию кода и упрощает
взаимодействие между различными частями приложения. Интерфейсы также способствуют лучшей
поддерживаемости и расширяемости кода.
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЛитКод
Задача: 648. Replace Words
В английском языке есть понятие "корень", за которым может следовать какое-то другое слово, чтобы образовать другое более длинное слово - назовем это слово производным. Например, если за корнем "help" следует слово "ful", мы можем образовать производное "helpful". Дайте словарь, состоящий из множества корней, и предложение, состоящее из слов, разделенных пробелами, замените все производные в предложении на образующий их корень. Если производное может быть заменено более чем одним корнем, замените его корнем, имеющим наименьшую длину. Верните предложение после замены.
Пример:
👨💻 Алгоритм:
1⃣ Преобразуйте словарь корней в набор для быстрого поиска.
2⃣ Пройдите по каждому слову в предложении и найдите самый короткий корень, который является префиксом этого слова.
3⃣ Замените слово найденным корнем и соберите обновленное предложение.
😎 Решение:
👉 Новости 👉 Платформа
Задача: 648. Replace Words
В английском языке есть понятие "корень", за которым может следовать какое-то другое слово, чтобы образовать другое более длинное слово - назовем это слово производным. Например, если за корнем "help" следует слово "ful", мы можем образовать производное "helpful". Дайте словарь, состоящий из множества корней, и предложение, состоящее из слов, разделенных пробелами, замените все производные в предложении на образующий их корень. Если производное может быть заменено более чем одним корнем, замените его корнем, имеющим наименьшую длину. Верните предложение после замены.
Пример:
Input: dictionary = ["cat","bat","rat"], sentence = "the cattle was rattled by the battery"
Output: "the cat was rat by the bat"
function replaceWords($roots, $sentence) {
$rootSet = array_flip($roots);
$replace = function($word) use ($rootSet) {
for ($i = 1; $i <= strlen($word); $i++) {
if (isset($rootSet[substr($word, 0, $i)])) {
return substr($word, 0, $i);
}
}
return $word;
};
$words = explode(" ", $sentence);
$replacedWords = array_map($replace, $words);
return implode(" ", $replacedWords);
}
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Что такое трейты в РНР?
Трейты в РНР - это механизм для повторного использования кода в разных классах без
необходимости использовать множественное наследование. Они позволяют включать набор
методов в класс, обеспечивая горизонтальное повторное использование кода.
👉 Новости 👉 Платформа
Трейты в РНР - это механизм для повторного использования кода в разных классах без
необходимости использовать множественное наследование. Они позволяют включать набор
методов в класс, обеспечивая горизонтальное повторное использование кода.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
👨💻 Интерактивная игрушка SQL Murder Mystery
Это квест, где нужно раскрыть убийство в городе SQL City с помощью SQL-запросов. Начинаешь с обрывков улик и шаг за шагом собираешь доказательства, чтобы вычислить преступника.
Если вы новичок в SQL, не беда — для вас подготовлен специальный пошаговый гид. А для опытных сыщиков сразу доступны данные для расследования.
Короче, если хотите совместить приятное с полезным и прокачать свои SQL-скиллы в увлекательной форме Попробовать
👉 Новости 👉 Платформа
Это квест, где нужно раскрыть убийство в городе SQL City с помощью SQL-запросов. Начинаешь с обрывков улик и шаг за шагом собираешь доказательства, чтобы вычислить преступника.
Если вы новичок в SQL, не беда — для вас подготовлен специальный пошаговый гид. А для опытных сыщиков сразу доступны данные для расследования.
Короче, если хотите совместить приятное с полезным и прокачать свои SQL-скиллы в увлекательной форме Попробовать
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👍 PHP 8.4 поставляется с удобным классом для работы с числами с плавающей запятой, который предлагает:
🟠 максимальную точность
🟠 объектно-ориентированный подход
🟠 неизменяемые объекты
🟠 удобные цепочные операции
Этот класс является частью расширения BCMath, которое обычно включено по умолчанию
👉 Новости 👉 Платформа
Этот класс является частью расширения BCMath, которое обычно включено по умолчанию
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 TwigStan — статический анализатор для Twig'а
Это статический анализатор для шаблонов Twig, основанный на PHPStan. Он предназначен для выявления ошибок в шаблонах Twig на этапе разработки, что способствует повышению качества и надежности кода. Инструмент компилирует шаблоны Twig в PHP-код, оптимизирует его для лучшего анализа и сообщает об ошибках, указывая исходный шаблон и номер строки, где возникла проблема.
Гитхаб
👉 Новости 👉 Платформа
Это статический анализатор для шаблонов Twig, основанный на PHPStan. Он предназначен для выявления ошибок в шаблонах Twig на этапе разработки, что способствует повышению качества и надежности кода. Инструмент компилирует шаблоны Twig в PHP-код, оптимизирует его для лучшего анализа и сообщает об ошибках, указывая исходный шаблон и номер строки, где возникла проблема.
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Как РНР обрабатывает отчёты об ошибках?
PHP обрабатывает ошибки с помощью функции
👉 Новости 👉 Платформа
PHP обрабатывает ошибки с помощью функции
error_reporting()
, которая задаёт уровень отчётности, и директивы display_errors
, контролирующей вывод ошибок. Для логирования ошибок используется log_errors
. Для кастомной обработки ошибок можно использовать функции set_error_handler()
и set_exception_handler()
. В производственной среде рекомендуется отключать вывод ошибок и включать логирование.Please open Telegram to view this post
VIEW IN TELEGRAM
YeaHub
YeaHub — тренажер собеседований по IT
5000+ вопросов для подготовки к интервью. Фильтры, квизы, статистика!
#вакансии
👨💻 Junior php-разработчик
Удаленно (Москва)
Motivity — это HR-tech сервис с готовой методологией.
Требования
🟠 Ты хорошо понимаешь ООП;
🟠 У тебя есть понимание и практика применения SOLID;
🟠 Хорошее знание PHP 8.1+;
🟠 Хорошее знание Symfony 5.4+ (Forms, Validator, Security, DI, EventDispatcher, Messenger, Console, Serrialization, Cache, Doctrine, Twig).
Подробнее о вакансии
👉 Новости 👉 Платформа
Удаленно (Москва)
Motivity — это HR-tech сервис с готовой методологией.
Требования
Подробнее о вакансии
Please open Telegram to view this post
VIEW IN TELEGRAM
Habr
Вакансия «Junior php-разработчик (symfony)», удаленно, работа в компании «Motivity» — Хабр Карьера
Вакансия «Junior php-разработчик (symfony)», удаленно, работа в компании «Motivity». Полная занятость. Можно удаленно.
Когда-нибудь приходилось ограничивать частоту выполнения задач?
Будь то защита API от перегрузки или ограничение количества задач для пользователей бесплатного тарифа, Laravel позволяет легко задавать лимиты и использовать их прямо из коробки
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
🥺 Секреты стройности монолита: подходы по снятию нагрузки с БД
Статья описывает, как команда Яндекс Еды оптимизировала свой монолитный PHP-сервис, снизив нагрузку на MySQL
Основные проблемы включали высокую загрузку CPU и памяти, сложность управления изменениями в структуре базы данных и срабатывание механизма Flow Control в Galera Cluster, что приводило к задержкам и сбоям в обслуживании запросов.
Для решения этих проблем команда распределила ответственность за таблицы между командами, анализировала медленные запросы с помощью утилиты pt-query-digest и внедрила различные оптимизации, включая использование кэширования и денормализацию данных
В результате удалось значительно снизить нагрузку на базу данных и улучшить производительность системы
Читать статью
👉 Новости 👉 Платформа
Статья описывает, как команда Яндекс Еды оптимизировала свой монолитный PHP-сервис, снизив нагрузку на MySQL
Основные проблемы включали высокую загрузку CPU и памяти, сложность управления изменениями в структуре базы данных и срабатывание механизма Flow Control в Galera Cluster, что приводило к задержкам и сбоям в обслуживании запросов.
Для решения этих проблем команда распределила ответственность за таблицы между командами, анализировала медленные запросы с помощью утилиты pt-query-digest и внедрила различные оптимизации, включая использование кэширования и денормализацию данных
В результате удалось значительно снизить нагрузку на базу данных и улучшить производительность системы
Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Как описать паттерн Наблюдатель (Observer) ?
Паттерн Наблюдатель - это поведенческий паттерн проектирования, в котором объект (субъект) уведомляет другие объекты (наблюдатели) о изменении своего состояния. Это полезно для реализации систем обработки событий. В РНР паттерн Наблюдатель может быть реализован с помощью интерфейсов
👉 Новости 👉 Платформа
Паттерн Наблюдатель - это поведенческий паттерн проектирования, в котором объект (субъект) уведомляет другие объекты (наблюдатели) о изменении своего состояния. Это полезно для реализации систем обработки событий. В РНР паттерн Наблюдатель может быть реализован с помощью интерфейсов
SplObserver
и SplSubject
из стандартной библиотеки.Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
😊 Общение с умными устройствами силами PHP
Каждый день мы сталкиваемся с более новыми и умными устройствами, управляемыми через интернет или Wi-Fi. Концепция IoT (Internet of Things) объединяет физические устройства в одну сеть для передачи данных и управления ими. И, оказывается, что интернет вещей — никакое не ограничение! Управлять устройствами в сети можно с помощью легковесного протокола MQTT.
Хабр
👉 Новости 👉 Платформа
Каждый день мы сталкиваемся с более новыми и умными устройствами, управляемыми через интернет или Wi-Fi. Концепция IoT (Internet of Things) объединяет физические устройства в одну сеть для передачи данных и управления ими. И, оказывается, что интернет вещей — никакое не ограничение! Управлять устройствами в сети можно с помощью легковесного протокола MQTT.
Хабр
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Общение с умными устройствами силами PHP
Умные устройства окружают нас повседневно и не только в быту: датчики, бытовые приборы, лампочки, розетки и другая техника. Каждый день мы сталкиваемся с более новыми и умными устройствами,...
#ЛитКод
Задача: 679. 24 Game
Дан массив целых чисел cards длиной 4. У вас есть четыре карты, каждая из которых содержит число в диапазоне от 1 до 9. Вам нужно расположить числа на этих картах в математическом выражении, используя операторы ['+', '-', '*', '/'] и скобки '(' и ')' так, чтобы получить значение 24.
Вы ограничены следующими правилами:
Оператор деления '/' представляет собой реальное деление, а не целочисленное деление.
Например, 4 / (1 - 2 / 3) = 4 / (1 / 3) = 12.
Каждая операция выполняется между двумя числами. В частности, мы не можем использовать '-' как унарный оператор.
Например, если cards = [1, 1, 1, 1], выражение "-1 - 1 - 1 - 1" не допускается.
Вы не можете объединять числа вместе.
Например, если cards = [1, 2, 1, 2], выражение "12 + 12" недопустимо.
Вернуть true, если вы можете получить такое выражение, которое оценивается в 24, и false в противном случае.
Пример:
👨💻 Алгоритм:
1⃣ Создайте функцию generatePossibleResults(a, b), которая возвращает массив результатов всех возможных математических операций над двумя числами.
2⃣ Создайте функцию checkIfResultReached(list), чтобы проверить, можем ли мы достичь результата 24, используя текущий массив list. Сначала проверьте базовые условия: если размер массива равен 1, верните true, если результат равен 24, иначе верните false.
3⃣ Если размер массива больше 1, выберите любые два числа из списка, выполните все математические операции над ними, создайте новый список с обновленными элементами и снова вызовите рекурсивную функцию с этим новым списком. Если ни одна комбинация не приводит к результату 24, верните false. Вызовите checkIfResultReached с исходным списком карт.
😎 Решение:
👉 Новости 👉 База вопросов
Задача: 679. 24 Game
Дан массив целых чисел cards длиной 4. У вас есть четыре карты, каждая из которых содержит число в диапазоне от 1 до 9. Вам нужно расположить числа на этих картах в математическом выражении, используя операторы ['+', '-', '*', '/'] и скобки '(' и ')' так, чтобы получить значение 24.
Вы ограничены следующими правилами:
Оператор деления '/' представляет собой реальное деление, а не целочисленное деление.
Например, 4 / (1 - 2 / 3) = 4 / (1 / 3) = 12.
Каждая операция выполняется между двумя числами. В частности, мы не можем использовать '-' как унарный оператор.
Например, если cards = [1, 1, 1, 1], выражение "-1 - 1 - 1 - 1" не допускается.
Вы не можете объединять числа вместе.
Например, если cards = [1, 2, 1, 2], выражение "12 + 12" недопустимо.
Вернуть true, если вы можете получить такое выражение, которое оценивается в 24, и false в противном случае.
Пример:
Input: cards = [4,1,8,7]
Output: true
Explanation: (8-4) * (7-1) = 24
class Solution {
function generatePossibleResults($a, $b) {
$res = [$a + $b, $a - $b, $b - $a, $a * $b];
if ($a != 0) $res[] = $b / $a;
if ($b != 0) $res[] = $a / $b;
return $res;
}
function checkIfResultReached($list) {
if (count($list) == 1) return abs($list[0] - 24) <= 0.1;
for ($i = 0; $i < count($list); $i++) {
for ($j = $i + 1; $j < count($list); $j++) {
$newList = [];
for ($k = 0; $k < count($list); $k++) {
if ($k != $i && $k != $j) $newList[] = $list[$k];
}
foreach ($this->generatePossibleResults($list[$i], $list[$j]) as $res) {
$newList[] = $res;
if ($this->checkIfResultReached($newList)) return true;
array_pop($newList);
}
}
}
return false;
}
function judgePoint24($cards) {
return $this->checkIfResultReached(array_map('floatval', $cards));
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM