Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
10.8K subscribers
1.65K photos
27 videos
26 files
4.44K links
Все самое полезное для пхпшника в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/bca892d6

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b
Download Telegram
🐳 Фишка Docker CLI

Контейнер запустился, но ведёт себя странно — не то сетевое окружение, не те переменные, непонятно что вообще внутри? Просто запустите docker inspect, и у вас будет полная картина без лишних инструментов.

🔹 Зачем это нужно

— Возвращает полный JSON с внутренностями: переменные окружения, тома, сетевые настройки, лимиты ресурсов, entrypoint, restart policy.
— Работает не только с контейнерами — понимает образы, тома и сети.
— Незаменимо, когда нужно быстро понять, почему контейнер ведёт себя не так, как ожидается.

🔹 Как использовать

— Полный дамп: docker inspect my-container
— Только IP-адрес: docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' my-container
— Все переменные окружения: docker inspect -f '{{range .Config.Env}}{{println .}}{{end}}' my-container
— Смонтированные тома: docker inspect -f '{{json .Mounts}}' my-container | jq

Флаг -f принимает Go-шаблоны — вытащите ровно то поле, которое нужно, без парсинга тысячи строк JSON вручную.
4🔥3👍2
Исследование облачных платформ
Apple Hills Digital собирает мнения специалистов об инфраструктуре: облака, гибридные решения, on-premise.
Можно пройти короткий отбор (~3 минуты) и попасть в основную часть исследования.
Дополнительно — участие в розыгрыше iPhone*

* Принимая участие в опросе Вы становитесь участником розыгрыша под наименованием «Если ты работаешь в IT, пройди опрос и выиграй iPhone 17 Pro». Информация об организаторе розыгрыша, сроках проведения, правилах проведения розыгрыша, количестве призов, сроках, месте, порядке получения призов размещена по ссылке.
1
Какова временная сложность сортировки слиянием (Merge Sort) в худшем случае?
Anonymous Quiz
15%
O(log n)
35%
O(n^2)
10%
O(n)
40%
O(n log n)
🔥3👍1🥱1
⚡️ array_walk и внешний контекст

Многие не используют третий аргумент array_walk — а зря.

$discounts = ['vip' => 0.3, 'regular' => 0.1];
$prices = ['vip' => 1000, 'regular' => 500];

array_walk($prices, function (&$price, $key, $discounts) {
$price -= $price * ($discounts[$key] ?? 0);
}, $discounts);

// ['vip' => 700, 'regular' => 450]


Третий аргумент — проброс внешних данных прямо в коллбэк. Не нужен use, не нужна глобальная переменная.

Читается чище, зависимости явные и сразу видно, что коллбэк работает с $discounts.

🐸 Библиотека пхпшника

#vardump
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍1
🤔 Repository в Laravel: паттерн или антипаттерн?

Eloquent — это Active Record. Когда ты оборачиваешь его в репозиторий и возвращаешь User::where(...)->get(), ты не абстрагируешься от ORM. Ты просто перекладываешь Eloquent в другой класс.

Настоящий репозиторий возвращает доменные объекты, а не модели с методами ->save() и ->delete().

💬 Что думаете?

🐸 Библиотека пхпшника

#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👏5👍3😁1
🦾 Надоело чинить «упавших» ИИ-агентов после каждого микросбоя внешних сервисов?

Анонсируем старт продаж большого курса по AgentOps. Мы собрали опыт десятков разработчиков и сделали программу, которая учит выводить ИИ в стабильный прод.

🗓 Ждем вас 28 апреля в 19:00 МСК на эфире: «Как эффективно управлять контекстным окном LLM в мультиагентных системах и не сливать бюджет на токены».

👉 Кто вещает и в чем польза?

Спикер Кирилл Кухарев (Senior AI Engineer в Raft, спикер AI Conf и Highload++). Он реализовал более 50 коммерческих проектов в GenAI и на вебинаре покажет, как взять под контроль работу нескольких агентов, чтобы они не перекидывали друг другу лишний контекст и не сжигали ваши деньги.

В прямом эфире разберем:
• Как формируется контекст в LLM при маршрутизации между агентами;
• Куда утекают лишние токены и возникает перерасход;
• Практические методы: как сжимать историю, грамотно делить задачи, лимитировать передачу контекста и собирать промпты прямо в процессе запроса пользователя.

🔥 Два способа получить максимум:

1. Приходите на вебинар 28 апреля. Дарим участникам промокод на 5.000 ₽ (работает 3 дня после эфира - это шанс забрать курс по самому низу рынка).

2. Выбирайте Инженерный трек. В подарок к нему идет полный доступ к записям и автопроверкам завершенного курса «Разработка ИИ-агентов».

👉 Занять место на вебинаре и стать профи в AgentOps
Please open Telegram to view this post
VIEW IN TELEGRAM
1😁1
💬 Обратная связь

Сколько среди нас джедаев синьоров?

Понятно, что грейд — довольно относительная история, но примерно ваш грейд:

🔥 — Senior
👍🏼 — Middle
❤️ — Junior
😁 — Ещё учусь
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥92👍79😁1917👾6
🏃‍♀️ Уже завтра стартует курс по разработке AI-агентов.

Про AI-агентов часто думают, что это просто модная обертка над джпт для пет-проектов. Кажется, прикрутил API к скрипту и типа готово. А вот и нет! Когда дело доходит до прода, начинаются настоящие проблемы.

Зачем глубоко копать мультиагентные системы, если можно обойтись старым добрым кодом? Как контролировать расходы на токены, чтобы новая фича не разорила бизнес? Как заставить агента работать стабильно и предсказуемо, а не галлюцинировать?


Эту инженерную часть мы и будем разбирать на курсе. Будем учиться интегрировать внешние API, работать с RAG, LangGraph, CrewAI и деплоить всё это так, чтобы работало как часы.

Стартуем завтра. Для участия и доступа к программе переходите по ссылке.
🥱1
🐘 Меняем директивы PHP на лету

Знаете, что можно изменить параметры среды выполнения прямо в рантайме без перезапуска сервера и правки конфигов?

🔹 Зачем это нужно

— ini_set() меняет параметры для текущего запроса: удобно для скриптов с нестандартными требованиями к памяти или таймаутам.
— ini_get() покажет реальное значение, которое видит ваш процесс, а не то, что вы написали в конфиге три года назад.
— Мгновенно отвечает на вопрос «а почему memory_limit игнорируется?»
— Работает без доступа к серверу, рестартов и DevOps-тикетов.

🔹 Как использовать

Посмотреть реальное значение директивы:
echo ini_get('memory_limit'); // '128M'

Переопределить на лету для тяжёлого импорта:
ini_set('memory_limit', '512M');
ini_set('max_execution_time', '300');

Дамп всех активных настроек:
phpprint_r(ini_get_all());

Только настройки конкретного расширения:
phpprint_r(ini_get_all('session'));

Проверить, откуда пришло значение — из php.ini, .htaccess или кода:
php$all = ini_get_all(null, true);
print_r($all['memory_limit']);
// ['global_value' => '128M', 'local_value' => '512M', 'access' => 7]


⚠️ Не все директивы можно менять через ini_set(), каждая имеет уровень доступа. Если ini_set() возвращает false — директива системная, её меняет только php.ini или конфиг пула php-fpm. Смотрите поле access в выводе ini_get_all(): 1 — можно из кода, 2 — только .htaccess/пул, 4 — только php.ini, 7 — везде.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81🔥1🥱1
⚡️ Мы рады представить команду экспертов курса AgentOps!

Дмитрий Антипов расскажет, как грамотно проверить работу AI-моделей
Курилл Кухарев поделится, почему компаниям выгодно использовать локальные модели и как их развернуть
Андрей Носов расскажет, как работать с данными и знаниями в AI-системах: построение RAG, выбор подходов к поиску и организация хранения данных
Антон Будняк разберет, как обеспечить устойчивость сервиса, в котором используется ИИ
Александр Ошурков расскажет, как оценивать качество работы LLM в backend-сервисах
Екатерина Трофимов разберет, как проектировать инструменты для AI-агентов и выстраивать взаимодействие с внешними сервисами

Курс для backend-разработчиков, тимлидов и LLM инженеров о том, как внедрять AI-логику в бэкенд IT-продуктов и сохранять стабильность сервиса.

К концу обучения вы получите:

• Структурированный подход к архитектуре и деплою AI-агентов
• Навыки настройки мониторинга, тестирования и контроля расходов на токены
• Разбор сложных инженерных кейсов из реальной практики

🎁 Доступ к материалам курса
«Разработка ИИ-агентов» в подарок при покупке Инженерного трека

👉 Все подробности и программа обучения.
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱3😁1
Объясни разницу между Gate и Policy в Laravel?

Оба инструмента для авторизации, но с разной областью применения.

Gateпростые одиночные проверки, не привязанные к модели:

// Определяем в AuthServiceProvider
Gate::define('access-admin-panel', function (User $user) {
return $user->is_admin;
});

// Проверяем
if (Gate::allows('access-admin-panel')) { ... }
// или в контроллере
$this->authorize('access-admin-panel');


Policy класс с набором правил для конкретной модели:

// php artisan make:policy PostPolicy --model=Post
class PostPolicy
{
public function update(User $user, Post $post): bool
{
return $user->id === $post->user_id;
}

public function delete(User $user, Post $post): bool
{
return $user->id === $post->user_id || $user->is_admin;
}
}

// Использование
$this->authorize('update', $post);


Правило выбора

— Нет модели → Gate
— Есть модель, несколько действий → Policy
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61🔥1
⚙️ Полезный инструмент для работы с JSON

JSON-файлы с высокой вложенностью часто сложно прочитать.
𝐉𝐬𝐨𝐧𝐂𝐫𝐚𝐜𝐤 создает графические диаграммы из JSON-файлов и делает их легко читаемыми.
Кроме того, созданные диаграммы можно скачать в виде изображений.

Также поддерживает YAML и XML форматы.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥1😁1
🔥 Вечный вопрос PHP-разработчика

Наш подписчик спрашивает:

«Работаю в компании 2 года. Достался огромный легаси-проект на PHP 7.1. Всё в кучу, тесты не писались никогда. Меня просят его "улучшать" параллельно с фичами. Как вообще подступиться? Рефакторить по-тихому или настаивать на переписывании? И как объяснить бизнесу, что технический долг — это реальная проблема, а не моё нытьё?»
— Дмитрий, PHP Developer


💬 Делитесь в комментариях

— Как вы работаете с легаси: рефакторинг кусками или полный переезд?
— Как убеждали руководство выделить время на технический долг?
— Есть ли у вас правило: когда код точно пора переписывать?

P.S. Если хотите задать вопрос, заполните нашу гугл-форму. Это займет 5 минут.

#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
😁92👍2
Сохраняйте шпаргалку по командам git
Please open Telegram to view this post
VIEW IN TELEGRAM
👏21👍1
This media is not supported in your browser
VIEW IN TELEGRAM
🥱2🤔1
🗓 В следующий вторник (28.04) в 19:00 встречаемся в онлайне.

Тема:
Как эффективно управлять контекстным окном LLM в мультиагентных системах и не сливать бюджет на токены


В кружке Кирилл Кухарев рассказал, какие именно подходы будем разбирать.

👉 Занять место на вебинаре
Please open Telegram to view this post
VIEW IN TELEGRAM
⌨️ Топ-вакансий по PHP за неделю

Fullstack разработчик PHP — от 180 000 до 230 000 ₽ — удалёнка

Backend-разработчик — от 1 800 до 3 100 $ — удалёнка

Team Lead PHP — до 402 000 ₽ — удалёнка

➡️ Еще больше топовых вакансий — в нашем канале PHP Jobs
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1