RU

Пишем свой PHP-экстеншен на Rust

Когда речь заходит о разработке PHP-расширений, многие сразу представляют C, Zend API и сложную систему сборки. Но сегодня есть более удобный путь.…

rustphp
Habr
RU

100% покрытия не поймали единственный баг, который был важен

У виджета было 92 теста и 100% построчного покрытия. Потом я открыл его в маленьком окне терминала, и шапка таблицы уехала за верхнюю границу экрана…

phpsymfonytuiпокрытие кодаphpunitтерминалopen sourceтестирование
Habr
RU

Как мы разработали свой сервис бронирования и победили гонки за слоты

Привет, Хабр! Меня зовут Михаил Емельянов, я ведущий разработчик в НЛМК ИТ. Команда, в которой я состою, занимается разработкой и поддержкой различн…

bitrixphpсервис бронированияmutexмьютексы
Habr
RU

Генератор QR‑кодов листами на PHP: детерминированное ядро и пять граблей по дороге

Этой весной мне понадобился лист QR‑кодов с подписями: по коду на каждую позицию, чтобы скачать PDF, распечатать и разрезать. Он…

qr-кодtcpdfphpean-13punycodeгенерация изображений
Habr
RU

Как PHP превратился в героя мемов и пережил все свои «похороны»

Если бы в интернете вручали премию за количество мемов, в финал наверняка вышли бы Леонардо ДиКаприо, коты с осуждающим взглядом и язык PHP. Над пос…

phpистория phpсерверная разработкавеб разработкаlegacy-кодмемыдинамические сайтыпочему php не умер
Habr
RU

ИИ-картограф: как карты сшиваются в бесшовный мир — тулсеты (toolsets) для MMORPG игр на PHP, ч. 21

Я сшил разрозненные карты MMO в один бесшовный мир: игрок выходит из города в пустыню и не замечает, что под ним уже работает другой сервер. А всю р…

phpsymfonyunitymmommorpgaimcpтайловые картыоткрытый мир
Habr
RU

Тесты для кода, который пишет ИИ: контракты вместо ассертов — создание сервера для онлайн ММО игр на PHP, ч. 20

Половину контрактов моего игрового сервера нельзя записать ассертом: исход живёт в ответе живого процесса, в разметке страницы и в кадре игры. Я зап…

тестированиеавтотестыaimcpphpmmounitysymfonygamedev
Habr
RU

Каталог ассетов и git для MMO: как командой вести игру в облаке — создание сервера для онлайн ММО игр на PHP, ч. 19

Над одной игрой работает команда: люди правят контент в браузере, ИИ — через тот же сервис, локально разворачивать ничего не нужно. Каждый ассет жив…

phpsymfonyunityc#mmommorpgaimcpwebsocket
Habr
RU

DepthNet: платформа для “живых” автономных AI-агентов с продвинутой памятью — год спустя

Год назад я написал здесь, что собрал на PHP/Laravel AI-агента, который способен рассуждать в циклах, потестил и остановился со словами «работает, н…

llm-агентai-agentlaravelphpавтономные агентыopen source
Habr
RU

Я написал мессенджер в одиночку. Поможете устроить ему краш‑тест?

Дисклеймер: Это статья-проверка на прочность. Проект работает на PHP + MySQL + Polling каждые 3 секунды. Если вы кликнули по ссылке, а сервер отдаёт…

phpmysqlpollingbackendmvpархитектурамессенджервеб-чаткраш-тестхабраэффект
Habr
RU

Как ИИ не дал загнуться ещё одной ноунейм игре. Даже текстовой

Третий год по вечерам в одиночку пилю текстовую MMORPG в Telegram. Мрачный остров, выжившие, ресурсы, базы, драки. Проект уже один раз почти умер. Т…

mmorpgtelegram botphpрефакторингнейросети в разработкеинди-разработкатестирование
Habr
RU

Кэширование в Symfony: мы сломали авторизацию и исправили это с помощью Lock

Мы добавили кэширование, чтобы ускорить работу бэкэнда. Затем кэширование нарушило авторизацию. Поначалу ситуация казалась безобидной. Сервису Symfo…

phpsymfonyпрограммированиеcachingmemcachedкэшированиеавторизациябэкенд
Habr
RU

Профилировщик CMS-движков для вебстудий

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

phpпрофилированиепрофилировщикпрофайлерпрофайлингпотребление ресурсоврасход памятиизбыточное потреблениепотеря временизагрузка страницы
Habr
RU

Я собрал кнопку, которая сотрёт прогресс всех моих игроков. И до сих пор боюсь её нажать

Два года по вечерам в одиночку пилю текстовую MMORPG в Telegram. Сейчас в ней 1111 аккаунтов и 586 выживших, которые бродят по мрачному острову. И г…

mmorpgвайпwipephpmysqlмиграциитестырефакторингtelegramбот
Habr
RU

Контракт из кода, клиент из контракта: избавляемся от тройного дублирования в API

Обычно процесс разработки API выглядит так: мы пишем контроллер. Затем каким-то образом его документируем. После чего фронтер, опираясь на такую док…

openapiopenapi generatorswaggerphpsymfonyreacttypescriptjavascriptaxiosorval
Habr
RU

gRPC в мире PHP: пошаговый гайд по сборке микросервиса на Symfony 8 и RoadRunner

Переход к микросервисной архитектуре неизбежно поднимает вопрос эффективности межсервисного взаимодействия. В PHP традиционный стек на базе PHP-FPM…

phpвеб-разработапрограммированиемикросервисыapiвысокая производительностьsymfony
Habr
RU

Интернет или ничего: как заставить PHP-разработчика ERP-системы писать под Windows

"Если вашего бизнеса нет в Интернете, то вас нет в бизнесе! Скоро на рынке останется два вида компаний: те, кто в Интернете и те, кто вышел из бизне…

ElectronSQLiteerpучетные системыrest apiphpmysqlcapacitor
Habr
RU

Разработка длиною в 3 года: как я писал свой PHP CMS/Framework Gy, «убийцу» Битрикса, весом 350 Кб

Под катом делюсь обзором своего самописного PHP-фреймворка Gy — попытки сделать легковесного «убийцу» Битрикса весом 350 Кб. Расскажу, как я реализо…

phpcmsframeworkпет-проектыopen sourceсамописный движок1с-битриксбаза данных на файлахgyвеб-разработа
Habr
RU

Как я php фреймворк писал

В качестве вступления небольшой дисклеймер. Ниже длиннопост про самописный PHP-фреймворк, с примерами кода и его описанием. Автор не интерпрайз-разр…

phpframeworkpsr-7psr-15cqrs
Habr