uk
Feedback
PHP Academy

PHP Academy

Відкрити в Telegram
9 391
Підписники
-624 години
-287 днів
-7430 день
Архів дописів
photo content

Оптимизация скорости работы PHP кода 🏎️ Сегодня я покажу вам несколько простых, но эффективных способов ускорить выполнение PHP-скриптов. Оптимизация кода – важная часть работы разработчика, ведь никто не любит медленные сайты. 🚀 🔥 1. Избегайте лишних запросов к БД Частая ошибка – несколько одинаковых запросов к базе данных в одном запросе. Используйте кэширование (Redis, Memcached), а если данные редко меняются – сохраняйте их в файл. 🔥 2. Используйте isset() вместо array_key_exists() Функция isset() работает быстрее, чем array_key_exists(), потому что она не только проверяет наличие ключа, но и сразу его значение.

// Медленный вариант
if (array_key_exists('key', $array)) { }

// Быстрый вариант
if (isset($array['key'])) { }
🔥 3. Не злоупотребляйте foreach при больших объемах данных Если у вас массив с десятками тысяч элементов, попробуйте array_map() или array_walk() – они работают быстрее за счет встроенной оптимизации в C. 🔥 4. Подключайте файлы правильно Разница между require, include, require_once и include_once может сильно повлиять на производительность. require_once проверяет, был ли уже подключен файл, что замедляет выполнение. Если точно знаете, что файл не дублируется – используйте require. 🔥 5. Включите OPCache OPCache кэширует байт-код PHP и ускоряет его выполнение в разы. Включите его в php.ini:

opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.validate_timestamps=1
🔥 6. Используйте json_encode() вместо serialize() Функция json_encode() работает быстрее, чем serialize(), и при этом генерирует более компактные данные.

$data = ['name' => 'John', 'age' => 25];

// Медленный вариант
$serialized = serialize($data);

// Быстрый вариант
$json = json_encode($data);
✅ Оптимизация PHP кода — это не магия, а грамотный подход к написанию скриптов. Используйте эти советы, и ваши проекты станут быстрее!

Docker и Kubernetes: основы разработки под облачную инфраструктуру Курс для тех, кто хочет держать свой стэк и знания актуаль
Docker и Kubernetes: основы разработки под облачную инфраструктуру Курс для тех, кто хочет держать свой стэк и знания актуальными и глубоко разбираться, как устроены Docker, Kubernetes, и современная облачная инфраструктура в целом. 🌐 Чему вы научитесь: 🤩 Создавать облачную инфраструктуру «с нуля» управление и конфигурация серверов с Terraform, Ansible, cloud‑init 🤩 Уверенно работать с Docker: Dockerfile, слои, кэш, многоступенчатые сборки, реестры, безопасность, air‑gapped 🤩 Проектировать многоконтейнерные приложения: паттерны Sidecar, Ambassador, Adapter, проверки (liveness/readiness), DaemonSet и поды 🤩 Настраивать сеть и балансировку в Kubernetes ClusterIP, Services, Ingress, MetalLB, TLS/SNI, сервис‑меши (Istio) 🤩 Организовывать хранение данных: PersistentVolumes / PVC, StorageClasses, резервное копирование. Упаковка в Helm и поддержка через Operator 🥸 Кто мы: R&D-центр Devhands. Автор курса — Николай Ихалайнен, эксперт по СУБД и бекенду (ex-Percona), со-основатель MyDB, энтузиаст открытого ПО. 🗓 Старт курса: 10 июня, 6 недель обучения. Изучить программу и записаться можно здесь. Ждем вас! Реклама. ИП Рыбак А.А. ИНН 771407709607 Erid: 2VtzqxNnFKA

Совет по Laravel 💡 Знаете ли вы, что... вы можете временно отключить timestamps при сохранении модели?
Совет по Laravel 💡 Знаете ли вы, что... вы можете временно отключить timestamps при сохранении модели?

✔️ Machine Learning Roadmap: нормальная карта входа в ML без сказок про «выучить нейросети за месяц» Большой русскоязычный ro
✔️ Machine Learning Roadmap: нормальная карта входа в ML без сказок про «выучить нейросети за месяц» Большой русскоязычный roadmap по машинному обучению: от первого import numpy до LLM, RAG, fine-tuning, AI-агентов и MLOps. И это не просто очередной список ссылок в стиле «посмотри 40 курсов и станешь ML engineer». Внутри нормальная структура: что учить, в каком порядке, зачем это нужно и какой практический артефакт должен появиться после каждого этапа. Roadmap разбит на 7 треков: - фундамент: Python, математика, статистика, инструменты - классический ML: scikit-learn, табличные данные, метрики, валидация - Deep Learning: PyTorch, CNN, RNN, training loop - LLM и трансформеры: attention, KV-cache, RAG, LoRA, агенты - Generative AI: изображения, видео, аудио, мультимодальность - MLOps и прод: Docker, Kubernetes, CI/CD, мониторинг, serving - специализация: CV, NLP, RecSys, RL, Safety Самое полезное - там честно написано, что ML это не только «обучить модель». В реальности большая часть работы живёт вокруг данных, метрик, деплоя, мониторинга, воспроизводимости и понимания, почему модель вообще ошибается. Хорошая мысль из roadmap: LLM не делает джуна сениором. Она ускоряет того, кто понимает базу. Без базы человек просто превращается в оператора Copilot, который не может объяснить, почему модель сломалась. По времени тоже без инфоцыганства: - 0-3 месяца: Python, математика, классический ML - 3-6 месяцев: Deep Learning и PyTorch - 6-12 месяцев: LLM, RAG, fine-tuning, AI-агенты - 12+ месяцев: MLOps, прод, масштабирование, специализация Короче, если давно хотели системно зайти в ML, а не прыгать между роликами про ChatGPT, Stable Diffusion и «топ-10 библиотек», это хороший ориентир. https://github.com/justxor/MachineLearningRoadmap/tree/main

Один человек написал код, который сегодня работает на 20+ млрд устройств Даниэль Стенберг начал cURL в 1996 году как маленьку
Один человек написал код, который сегодня работает на 20+ млрд устройств Даниэль Стенберг начал cURL в 1996 году как маленькую утилиту для скачивания файлов из интернета. Без большой команды. Без венчурных денег. Без хайпа. Просто писал open-source инструмент в свободное время. Почти 30 лет спустя cURL стал тихим фундаментом интернета. Он есть в iPhone, Android, PlayStation, Tesla, серверах, приложениях, сайтах и куче устройств, о которых мы даже не думаем. Его используют Spotify, YouTube, Netflix, Instagram и тысячи других сервисов. NASA даже использовала cURL на марсианском вертолёте Ingenuity. То есть код Стенберга буквально летал на другой планете. Самое безумное - первые 23 года он не зарабатывал на cURL ничего. Триллионные компании строили продукты на его коде, а он продолжал бесплатно поддерживать проект и отвечать на баг-репорты. В 2017 году король Швеции вручил ему премию Полхема - впервые в истории эту награду получил open-source проект. В 2019 году Стенберг наконец начал работать над cURL фултайм в wolfSSL. В 2025 году получил золотую медаль IVA от Королевской шведской академии инженерных наук. Но по сути ничего не изменилось: он всё ещё пишет код из домашнего офиса в Стокгольме и сам отвечает на GitHub issues. Почти 30 лет человек делал инструмент, который работает в фоне и держит огромную часть интернета. Без громких презентаций. Без миллиардных раундов. Просто хороший код, который пережил почти всё.

photo content

Совет по PHP/Laravel 💡 Вместо того чтобы выполнять цикл `foreach` по массиву для поиска значения записи, вы можете использов
Совет по PHP/Laravel 💡 Вместо того чтобы выполнять цикл `foreach` по массиву для поиска значения записи, вы можете использовать метод Laravel Collection `contains()`.

✨ Советы по Laravel ✨ Если вы создаете API в своем проекте: 🪐 Применяйте версионирование в самом первом релизе 🪐 Поддержива
✨ Советы по Laravel ✨ Если вы создаете API в своем проекте: 🪐 Применяйте версионирование в самом первом релизе 🪐 Поддерживайте чистоту в routes/api.php, создавая разные файлы маршрутов для каждой версии👇 🧹 Более чистый код, 📈 Лучшие результаты

👣 На Stepik обновили курс «Rust: полный курс разработчика. С нуля до профи» Представьте: через три месяца вы открываете чужо
👣 На Stepik обновили курс «Rust: полный курс разработчика. С нуля до профи» Представьте: через три месяца вы открываете чужой Rust-код и читаете его как книгу. Arc<Mutex<T>> не вызывает панику. impl Future не пугает. Вы точно знаете, почему компилятор ругается и как это починить за 10 секунд. Это не фантазия. Это результат 50 уроков, в которых каждая концепция объясняется через код и закрепляется практикой. Ownership, traits, generics, async, unsafe - всё, что казалось магией, станет рабочим инструментом. А бонусом - портфолио проектов: от CLI-утилит до REST API и WebAssembly. Вы и так знаете, что Rust - ваш следующий язык. Этот курс просто сделает это реальностью. Сегодня - 55% процентов от цены, торопись: https://stepik.org/a/269250/

Совет по Laravel 💡 Данные загружаются быстрее, если целевое значение является целым числом. Используйте 𝘄𝗵𝗲𝗿𝗲𝗜𝗻𝘁𝗲𝗴
Совет по Laravel 💡 Данные загружаются быстрее, если целевое значение является целым числом. Используйте 𝘄𝗵𝗲𝗿𝗲𝗜𝗻𝘁𝗲𝗴𝗲𝗿𝗜𝗻𝗥𝗮𝘄() вместо метода 𝘄𝗵𝗲𝗿𝗲𝗜𝗻(), чтобы быстрее загружать данные, когда целевое значение является целым числом.

🚀 Ты всё ещё называешь обёртку над ChatGPT «AI-продуктом»? Пока ты пишешь промпты - рынок уже ушёл дальше. Сейчас выигрывают
🚀 Ты всё ещё называешь обёртку над ChatGPT «AI-продуктом»? Пока ты пишешь промпты - рынок уже ушёл дальше. Сейчас выигрывают не те, кто умеет красиво формулировать запросы, а те, кто строит агентные системы: - принимают решения сами - ходят в API - работают с Postgres и Redis - управляют браузером через Playwright - доводят задачи до результата без человека И вот правда, о которой мало говорят: 90% таких систем умирают между ноутбуком и продом. Работает локально. Ломается в реальности. Нет архитектуры. Нет устойчивости. Нет деплоя. AI Agents Engineering - курс со Stepik, который закрывает этот разрыв. - LangGraph, AutoGen, Computer Use - архитектура агентов, а не «скрипты на коленке» - LLMOps, логирование, стабильность - деплой в Docker и работа в проде 8 модулей, 120+ шагов, всё через практику. На выходе не «сертификат ради галочки», а: - рабочий production-агент - понимание, как строить такие системы с нуля - навыки, за которые уже платят Сейчас самое окно входа. Через полгода это станет базой, а не преимуществом. Скидка 55% действует ещё 48 часов: https://stepik.org/a/276971/

Совет по Laravel Передавайте большие файлы без задержек, используя потоки
Совет по Laravel Передавайте большие файлы без задержек, используя потоки

⌛️ Как настроить production-ready логирование в PHP Логи в проде — это не просто error_log(). Это структурированные данные, correlation ID, асинхронная запись и ротация. Разбираем пошаговую настройку. 1️⃣ Выбираем стек: Monolog PHP де-факто стандарт для логирования — Monolog. Устанавливаем через Composer:
composer require monolog/monolog
Если на Laravel, уже есть из коробки. Если нет, то подключаем вручную. 2️⃣ Базовая конфигурация с JSON-форматом

use Monolog\Logger;
use Monolog\Handler\RotatingFileHandler;
use Monolog\Formatter\JsonFormatter;

$log = new Logger('app');

$handler = new RotatingFileHandler(
    __DIR__ . '/logs/application.log',
    maxFiles: 30,
    level: Logger::INFO
);

$handler->setFormatter(new JsonFormatter());
$log->pushHandler($handler);
JSON-формат удобен для парсинга в ELK / Grafana Loki. 3️⃣ Добавляем Correlation ID Трекаем каждый запрос через Processor:

class CorrelationIdProcessor implements ProcessorInterface
{
    private string $correlationId;

    public function __construct()
    {
        $this->correlationId = $_SERVER['HTTP_X_CORRELATION_ID']
            ?? bin2hex(random_bytes(16));

        header('X-Correlation-ID: ' . $this->correlationId);
    }

    public function __invoke(array $record): array
    {
        $record['extra']['correlation_id'] = $this->correlationId;
        return $record;
    }
}

$log->pushProcessor(new CorrelationIdProcessor());
Теперь каждая строка лога привязана к конкретному запросу. 4️⃣ Ротация и лимиты

$handler = new RotatingFileHandler(
    filename: __DIR__ . '/logs/app.log',
    maxFiles: 30,
    level: Logger::WARNING,
);
Для ограничения по размеру связываем с logrotate на уровне системы:

# /etc/logrotate.d/php-app
/var/www/app/logs/*.log {
    daily
    rotate 30
    compress
    missingok
    size 100M
}
5️⃣ Асинхронная запись PHP синхронный по природе, но можно буферизовать тяжёлые хендлеры:

use Monolog\Handler\BufferHandler;

$bufferHandler = new BufferHandler(
    handler: new StreamHandler('logs/app.log'),
    bufferSize: 100,
    flushOnOverflow: true
);

$log->pushHandler($bufferHandler);
Буферизуем записи и сбрасываем пачкой → меньше I/O операций. 6️⃣ Интеграция с мониторингом Отправляем в Graylog через GELF:

use Monolog\Handler\GelfHandler;
use Gelf\Publisher;
use Gelf\Transport\UdpTransport;

$publisher = new Publisher(
    new UdpTransport('logstash.example.com', 12201)
);

$log->pushHandler(new GelfHandler($publisher));
Или напрямую в Telegram для критических ошибок. Отдельный хендлер, 5 минут работы. 📌 Итог Monolog + JsonFormatter + CorrelationId + logrotate = логи, с которыми не стыдно идти в прод.

Локализация текстов в Symfony. Бесплатный урок курса «Symfony Framework» Перевести интерфейс через файлы — это только начало.
Локализация текстов в Symfony. Бесплатный урок курса «Symfony Framework» Перевести интерфейс через файлы — это только начало. Сложности начинаются тогда, когда переводить нужно не статичные строки, а содержимое из базы данных, которое живёт в админке и должно оставаться управляемым с точки зрения архитектуры. 📅 На открытом уроке 15 апреля в 20:00: — Разберём реальный сценарий локализации в Symfony — от стандартного подхода со статическими переводами до более сложной работы с динамическими текстами из базы данных. — Покажем возможности symfony/translation, разберём подходы к хранению переводов, варианты моделей данных и практическую реализацию получения локализованного содержимого через Doctrine.
Урок не для тех, кто хочет решить многоязычность «одной таблицей на всё», не думает о поддержке архитектуры и считает, что локализация заканчивается на переводе кнопок и заголовков.
👉 Записаться: https://otus.pw/FFmT/?erid=2W5zFGq8i8q Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

⚡️ 8 хуков Claude Code, которые автоматизируют то, что вы вечно забываете Вы говорите Claude Code отформатировать файл, а он
⚡️ 8 хуков Claude Code, которые автоматизируют то, что вы вечно забываете Вы говорите Claude Code отформатировать файл, а он этого не делает. Просите не трогать .env, а он лезет туда первым делом. Напоминаете прогнать тесты перед завершением, а он забывает. Знакомо? Все потому, что CLAUDE.md по сути является рекомендацией. Claude читает его и следует ему примерно в 80% случаев. Хуки работают иначе. Это автоматические действия, которые срабатывают каждый раз, когда Claude редактирует файл, выполняет команду или завершает задачу. Ниже разберем 8 готовых хуков, которые можно скопировать прямо в settings.json и больше о них не вспоминать. https://uproger.com/8-hukov-claude-code-kotorye-avtomatiziruyut-to-chto-vy-vechno-zabyvaete/

Совет по Laravel 💡: Метод «diffInDaysFiltered» Вам когда-нибудь требовалось подсчитать количество дней между двумя датами пр
Совет по Laravel 💡: Метод «diffInDaysFiltered» Вам когда-нибудь требовалось подсчитать количество дней между двумя датами при фильтрации по условию? Поскольку Laravel использует Carbon под капотом, вы можете использовать «diffInDaysFiltered», чтобы сделать именно это 🚀. #laravel

Когда DDD вам НЕ нужен (и когда нужен) DDD - это не про структуру папок. Это про борьбу со сложностью. Самая большая ловушка: прочитав Эванса или Вернона, начать пихать DDD в простой CRUD. Если ваше приложение просто перекладывает JSON из запроса в базу, DDD сделает разработку в 3 раза дороже и медленнее. 🚦 Когда DDD избыточен: 💜Админки, простые CMS. 💜Микросервисы-прокси. 💜Прототипы (MVP), которые нужно выкинуть через месяц. 🔥 Когда DDD необходим: 💜Сложный бизнес-процесс: (например, расчет налога с учетом льгот, региона и фазы луны). 💜Долгоживущий проект: (вы будете поддерживать это 3+ года). 💜Важность языка: Когда менеджер говорит «списать бонус», а в коде это $user->points -= 10. Это рассинхрон, который приведет к багам. В DDD это будет $user->debitBonuses(10). Главный принцип: DDD применяется не ко всему проекту целиком, а к Core Domain (Ядру). Вспомогательные модули (отправка почты, логи) могут и должны оставаться простыми. Вывод: Не стройте "Звезду Смерти" для доставки пиццы. Сложность архитектуры должна соответствовать сложности бизнеса.

🌊 Wave — стартер-пак для разработки SaaS-приложений Библиотека написана на Laravel и включает все необходимое: — аутентифика
🌊 Wave — стартер-пак для разработки SaaS-приложений Библиотека написана на Laravel и включает все необходимое: — аутентификация, — профили пользователей, — биллинг, — подписка, — роли и права доступа, — уведомления и административная панель. Инструмент упрощает создание SaaS-приложений, предоставляя необходимые базовые компоненты и гибкие возможности для дальнейшей настройки. 💻 GitHub

Станьте разработчиком нейро-сотрудников на Python и зарабатывайте от 150.000р в месяц 🔥🔥🔥 Мы научим вас создавать топовых нейро-сотрудников на базе GPT-4 Omni, и вы сможете: 1️⃣ Устроиться разработчиком в крупную компанию и зарабатывать от 150 тысяч ₽ в месяц 2️⃣ Разрабатывать такие проекты на заказ и зарабатывать от 500 тысяч ₽ за проект 3️⃣ Создать нейро-сотрудника в вашей компании и вырасти на +30-100% в зарплате Что будет на интенсиве? 🧬 Теория: как создаются нейро-сотрудники с GPT-4o на Python 🧬 Практика: мы создадим нейро-консультанта, нейро-HR, нейро-маркетолога и др. Ведущий интенсива - Senior AI разработчик нейросетей и основатель Университета искусственного интеллекта 🔥 Регистрируйтесь на бесплатный интенсив! Встречаемся в ближайший четверг!