Логи сервера в plain text, нужно быстро подсчитать количество запросов по HTTP-статусам? awk — ваш Swiss Army Knife для обработки текстовых данных прямо в терминале.
🔹 Зачем это нужно
— Мгновенная агрегация данных из логов без загрузки в БД или Python.
— Работает с любым текстовым форматом.
— Есть на каждом сервере.
🔹 Как использовать
— Подсчёт по статусам (nginx access.log):
awk '{print $9}' access.log | sort | uniq -c | sort -rn— Среднее время ответа:
awk '{sum+=$NF; n++} END {print sum/n}' access.log— Только 5xx ошибки:
awk '$9 ~ /^5/' access.log— Топ-10 IP по количеству запросов:
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -10— Вывести конкретные поля:
awk -F',' '{print $1, $3}' data.csvPlease open Telegram to view this post
VIEW IN TELEGRAM
❤2👍2🔥1
⚔️ final по умолчанию
Это дисциплина или недоверие к коллегам, зашитое в код?
final + readonly + strict_types + PHPStan lvl 9 + arch()->preset()->strict(), который роняет CI за один пропущенный final.
Аргументы за: composition over inheritance, никаких fragile base class, инварианты под защитой.
Цена: мок в тесте — упёрся в final. Подправить вендорский класс — форк пакета. readonly DTO — пока не понадобился with().
Граница не в «строго/нестрого», а в дефолте: final по умолчанию с осознанными исключениями, или открыто, а final только на классах с инвариантами?
Где у вас проходит эта линия? 👇
— final/readonly на всё
— дайте просто писать код
Пишите мнение в комментах🍿
Это дисциплина или недоверие к коллегам, зашитое в код?
final + readonly + strict_types + PHPStan lvl 9 + arch()->preset()->strict(), который роняет CI за один пропущенный final.
Аргументы за: composition over inheritance, никаких fragile base class, инварианты под защитой.
Цена: мок в тесте — упёрся в final. Подправить вендорский класс — форк пакета. readonly DTO — пока не понадобился with().
Граница не в «строго/нестрого», а в дефолте: final по умолчанию с осознанными исключениями, или открыто, а final только на классах с инвариантами?
Где у вас проходит эта линия? 👇
— final/readonly на всё
— дайте просто писать код
Пишите мнение в комментах🍿
😁2🤔2👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍2🔥2
Forwarded from Библиотека задач по PHP | тесты, код, задания
😁13🥱12❤1👍1
⏰ Уже сегодня в 19:00 (МСК) стартует открытый урок!
Тема:
🔥 За 90 минут разберёмся, когда действительно стоит строить мультиагентную систему, а когда она только добавляет сложность, расходы и новые точки отказа.
Поговорим о критериях выбора архитектуры, типичных ошибках и ограничениях современных ИИ-агентов, которые важно учитывать ещё до внедрения в продукт.
🎙️ Спикер — Дмитрий Юдин, руководитель AI/ML-направления в Сloud․ru.
🎁 Для всех участников подготовили промокод на скидку 10 000 ₽ на курс «Разработка ИИ-агентов».
👉 Успей присоединиться к уроку
Тема:
«Мультиагентные системы: почему большинство архитектур переусложнены»
🔥 За 90 минут разберёмся, когда действительно стоит строить мультиагентную систему, а когда она только добавляет сложность, расходы и новые точки отказа.
Поговорим о критериях выбора архитектуры, типичных ошибках и ограничениях современных ИИ-агентов, которые важно учитывать ещё до внедрения в продукт.
🎙️ Спикер — Дмитрий Юдин, руководитель AI/ML-направления в Сloud․ru.
🎁 Для всех участников подготовили промокод на скидку 10 000 ₽ на курс «Разработка ИИ-агентов».
👉 Успей присоединиться к уроку
⌨️ Топ-вакансий по PHP за неделю
Middle/Senior PHP-разработчик (Laravel + высоконагруженные системы) — от 200 000 до 350 000 ₽ — офис (Москва)
Team Lead PHP/Go — 3 000 — 4 000 € — удалёнка
Senior PHP Developer — от 4 000 € — удалёнка
➡️ Еще больше топовых вакансий — в нашем канале PHP Jobs
Middle/Senior PHP-разработчик (Laravel + высоконагруженные системы) — от 200 000 до 350 000 ₽ — офис (Москва)
Team Lead PHP/Go — 3 000 — 4 000 € — удалёнка
Senior PHP Developer — от 4 000 € — удалёнка
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1🔥1
🤖 Используешь AI для написания кода? В Яндексе покажут, как применять AI для реальных задач разработки.
23 июня в 19:00 совместно с Яндексом проведём открытый урок «AI-инструменты в разработке: как писать код быстрее с помощью ассистентов».
Спикер — Ольга Лукьянова, руководитель команды поиска и навигации по коду в SourceCraft. Более 18 лет развивала инструменты для разработчиков в JetBrains и руководила разработкой IDE в Huawei.
Что получишь на уроке:
— поймёшь, как использовать AI-ассистентов и облачных агентов в работе;
— научишься быстрее разбираться в новых проектах и кодовой базе;
— узнаешь, какие задачи стоит отдавать AI и как получать качественный результат;
— увидишь полный workflow работы с AI: от постановки задачи до код-ревью.
На уроке — живой разбор реального проекта с кодом. Ольга покажет промпты из рабочих сценариев и ответит на ваши вопросы в Q&A.
⚠️ Количество мест ограничено
🗓️ Когда: 23 июня, 19:00 (МСК)
👉 Занять место на открытом уроке
23 июня в 19:00 совместно с Яндексом проведём открытый урок «AI-инструменты в разработке: как писать код быстрее с помощью ассистентов».
Спикер — Ольга Лукьянова, руководитель команды поиска и навигации по коду в SourceCraft. Более 18 лет развивала инструменты для разработчиков в JetBrains и руководила разработкой IDE в Huawei.
Что получишь на уроке:
— поймёшь, как использовать AI-ассистентов и облачных агентов в работе;
— научишься быстрее разбираться в новых проектах и кодовой базе;
— узнаешь, какие задачи стоит отдавать AI и как получать качественный результат;
— увидишь полный workflow работы с AI: от постановки задачи до код-ревью.
На уроке — живой разбор реального проекта с кодом. Ольга покажет промпты из рабочих сценариев и ответит на ваши вопросы в Q&A.
⚠️ Количество мест ограничено
🗓️ Когда: 23 июня, 19:00 (МСК)
👉 Занять место на открытом уроке
🐘 Работа с PostgreSQL
Таблица разрослась до десятков гигабайт, но данных в ней на пару гигов после массовых DELETE? VACUUM FULL перепишет таблицу и вернёт место на диск. Но есть нюансы.
🔹 Зачем это нужно
— PostgreSQL при DELETE не освобождает место на диске, а помечает строки как мёртвые.
— Обычный VACUUM чистит мёртвые строки для переиспользования, но файл не уменьшает.
— VACUUM FULL физически переписывает таблицу, реально освобождает место.
🔹 Как использовать
— Проверить «раздутие»:
— Мёртвые строки:
— Обычный VACUUM:
— Полная перезапись:
— Обновить статистику:
💡 VACUUM FULL берёт эксклюзивный лок — таблица полностью недоступна. На проде используйте pg_repack, он делает то же самое, но без блокировки. Ставится как расширение: CREATE EXTENSION pg_repack;
🐸 Библиотека пхпшника
Таблица разрослась до десятков гигабайт, но данных в ней на пару гигов после массовых DELETE? VACUUM FULL перепишет таблицу и вернёт место на диск. Но есть нюансы.
🔹 Зачем это нужно
— PostgreSQL при DELETE не освобождает место на диске, а помечает строки как мёртвые.
— Обычный VACUUM чистит мёртвые строки для переиспользования, но файл не уменьшает.
— VACUUM FULL физически переписывает таблицу, реально освобождает место.
🔹 Как использовать
— Проверить «раздутие»:
SELECT pg_size_pretty(pg_total_relation_size('my_table'));— Мёртвые строки:
SELECT n_dead_tup, n_live_tup FROM pg_stat_user_tables WHERE relname = 'my_table';— Обычный VACUUM:
VACUUM VERBOSE my_table; (не блокирует таблицу)— Полная перезапись:
VACUUM FULL my_table; (⚠️ блокирует таблицу полностью!)— Обновить статистику:
ANALYZE my_table;Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2😁1
🤖 Мы тут подготовили небольшую игру по ИИ-агентам
В ней нужно собрать AI-агента на LangGraph: выбрать узлы, пройти развилки и запустить собственный workflow.
Никакой теории — сразу практика. Можно наглядно увидеть, как работают агентные системы, проверьте свои знания или показать другим как это всё работает 🔥
🎁 За прохождение получите персональную скидку на курс. Чем больше баллов наберете — тем больше будет скидка.
Плюс сейчас действует предложение: покупаешь 1 курс, получаешь еще 2 любых в подарок. Для этого надо будет оставить заявку на сайте академии после прохождения игры.
🚀 Собрать своего AI-агента
В ней нужно собрать AI-агента на LangGraph: выбрать узлы, пройти развилки и запустить собственный workflow.
Никакой теории — сразу практика. Можно наглядно увидеть, как работают агентные системы, проверьте свои знания или показать другим как это всё работает 🔥
🎁 За прохождение получите персональную скидку на курс. Чем больше баллов наберете — тем больше будет скидка.
Плюс сейчас действует предложение: покупаешь 1 курс, получаешь еще 2 любых в подарок. Для этого надо будет оставить заявку на сайте академии после прохождения игры.
🚀 Собрать своего AI-агента
Forwarded from Библиотека собеса по PHP | вопросы с собеседований
Пользователь листает ленту и видит один и тот же пост дважды. А кто-то жалуется, что пропускает записи 👇
📦 Задание
Соцсеть, активная лента, новые посты прилетают каждую секунду. Постраничный вывод сделали классически, через LIMIT/OFFSET. На ревью прошло, тесты зелёные (в тестах данные статичные). В проде в часы пик начались жалобы: дубли на стыке страниц и «куда-то делся пост, я его точно видел».
// src/Feed/FeedRepository.php
class FeedRepository
{
public function __construct(private readonly PDO $pdo) {}
public function page(int $page, int $perPage): array
{
$offset = ($page - 1) * $perPage;
$stmt = $this->pdo->prepare(
'SELECT id, author_id, body, created_at
FROM posts
ORDER BY created_at DESC
LIMIT :limit OFFSET :offset'
);
$stmt->bindValue(':limit', $perPage, PDO::PARAM_INT);
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
}
🔹 Задачи
— Объяснить, почему на меняющихся данных OFFSET даёт дубли и пропуски между страницами
— Объяснить, почему сортировка только по created_at дополнительно усугубляет проблему
— Переписать на keyset-пагинацию (cursor) так, чтобы вставки/удаления не сдвигали выдачу
Ставьте → 🔥 если нравится формат. Если нет → 🌚
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍4🤔2🌚1
Нужно массово заменить строку во всех файлах проекта? sed -i — замена прямо в файлах, без открытия редактора, без скриптов.
🔹 Зачем это нужно
— Массовый рефакторинг: переименовать endpoint, обновить URL, сменить конфиг.
— Работает с пайпами и можно комбинировать с find и grep.
— Поддерживает регулярки, а не просто текстовая замена.
🔹 Как использовать
— Замена в файле:
sed -i 's/old-api/new-api/g' config.yaml— Во всех файлах рекурсивно:
find . -name "*.yaml" -exec sed -i 's/old-api/new-api/g' {} +— Удалить строки с паттерном:
sed -i '/DEBUG/d' app.log— Вставить строку после совпадения:
sed -i '/server {/a\ listen 443 ssl;' nginx.conf— На macOS:
sed -i '' 's/old/new/g' file.txt (пустой суффикс бэкапа)sed -i всегда делайте dry run: grep -r "old-api" --include="*.yaml" — убедитесь, что замена затронет только нужные файлы. И коммитьте перед заменой, git diff покажет, если что-то пошло не так.Please open Telegram to view this post
VIEW IN TELEGRAM
😁4👍2🔥2
🐘 В php.ini канала нашли подозрительную настройку
Хотим поправить конфиг и включить сторис.
Туда удобно выносить короткие PHP-шпаргалки, вопросы с собесов, мини-разборы, опросы и ссылки, которые не всегда тянут на отдельный пост.
Помочь просто → оформить буст канала.
🐸 Библиотека пхпшника
stories.enabled = Off
extra_formats.enabled = Off
admin.mood = tired
Хотим поправить конфиг и включить сторис.
Туда удобно выносить короткие PHP-шпаргалки, вопросы с собесов, мини-разборы, опросы и ссылки, которые не всегда тянут на отдельный пост.
Помочь просто → оформить буст канала.
Please open Telegram to view this post
VIEW IN TELEGRAM
1😁11🥱5👍4👏1
🔥 PHP 8.5 завёз пайпы
Тот самый
Читается сверху вниз, а не выворачивается наизнанку. Но скажем честно:
— чистый сахар, те же опкоды, что и временные переменные;
— (...) в каждом шаге мозолит глаз;
— стрелочные функции надо оборачивать в скобки;
— без PFA многоаргументные функции в пайп не засунешь;
— а куда воткнуть var_dump посреди a |> b |> c?
Что думаете, это шаг к читаемому функциональному PHP или сахарок, который уже раздражает в ревью?
💬 Пишите мнение в комменты
🐸 Библиотека пхпшника
Тот самый
|>, которого ждали с 2016-го. Три RFC, Ларри Гарфилд, «третий раз — заветный».$slug = $title
|> trim(...)
|> strtolower(...);
Читается сверху вниз, а не выворачивается наизнанку. Но скажем честно:
— чистый сахар, те же опкоды, что и временные переменные;
— (...) в каждом шаге мозолит глаз;
— стрелочные функции надо оборачивать в скобки;
— без PFA многоаргументные функции в пайп не засунешь;
— а куда воткнуть var_dump посреди a |> b |> c?
Что думаете, это шаг к читаемому функциональному PHP или сахарок, который уже раздражает в ревью?
Please open Telegram to view this post
VIEW IN TELEGRAM
😢14😁3👍2🥱2💯2
⏰ Уже сегодня в 19:00 (МСК) стартует наш открытый урок!
Знаем, летом хочется отложить учёбу на осень. Но пока остальные отдыхают 😅, мы предлагаем без лишней конкуренции прокачать свой workflow и начать закрывать тикеты в три раза быстрее.
Тема:
Мы покажем живой разбор реального проекта: как с помощью AI-ассистентов мгновенно разбираться в чужой кодовой базе, искать нужные участки и собирать Pull Request. Только рабочие промпты, которые сэкономят вам часы рутины.
🎙 Спикер — Ольга Лукьянова, руководитель команды в SourceCraft (18+ лет развивала инструменты в JetBrains и Huawei).
👉 Узнать, как ускорить разработку с AI
Знаем, летом хочется отложить учёбу на осень. Но пока остальные отдыхают 😅, мы предлагаем без лишней конкуренции прокачать свой workflow и начать закрывать тикеты в три раза быстрее.
Тема:
«AI-инструменты в разработке: пишем код быстрее»
Мы покажем живой разбор реального проекта: как с помощью AI-ассистентов мгновенно разбираться в чужой кодовой базе, искать нужные участки и собирать Pull Request. Только рабочие промпты, которые сэкономят вам часы рутины.
🎙 Спикер — Ольга Лукьянова, руководитель команды в SourceCraft (18+ лет развивала инструменты в JetBrains и Huawei).
👉 Узнать, как ускорить разработку с AI
Forwarded from Библиотека задач по PHP | тесты, код, задания
Почему refcount недостаточно для освобождения всей памяти и что решает проблему?
Anonymous Quiz
8%
refcount не считает массивы; помогает opcache
63%
Циклические ссылки оставляют refcount > 0; их собирает циклический GC
15%
refcount не работает для объектов; помогает __destruct
14%
Проблема в interned strings; нужен ручной gc_collect_cycles()
🤔6👍1🔥1😢1
В начале месяца вышел TrueAsync 0.7.0
Версия определяет необходимый API для асинхронного программирования. Релиз соединяет потоки и корутины в единое целое, позволяя комбинировать CPU BOUND/IO BOUND задачи.
Дополнительное расширение-сервер на С помогает использовать async серверные приложения.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥3🤔1