Обновить
64K+

PHP *

Скриптовый язык общего назначения

86,7
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Mini Bucket 3.6.4: теперь с плагинами — двери для разработки открыты

Время на прочтение3 мин
Охват и читатели8.2K

Как мы превратили панель управления NAS в платформу для расширений, зачем туда Log Manager и для чего Plugin Template.

В новой версии 3.6.4 я добавил возможность устанавливать плагины. Перед реализацией возникло много вопросов. Наша ключевая фишка — мультисеть (позволяет переключать фронтенд на бэкенд другого сервера для его мониторинга и управления). Значит, и модуль плагинов должен уметь переключаться.

И......

Что же дальше...

Весь «вечно живущий» мир моей MMORPG держится на одной строке в кроне

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели6.8K

Два года по вечерам в одиночку пилю текстовую MMORPG в Telegram — мрачный остров, по которому ходят выжившие. В прошлой статье рассказал, как заброшенный на полтора года проект сам собрал игроков. Обещал показать техническую кухню — показываю. Без позы сеньора: где нормальные решения, а где костыли, которыми я не горжусь, но которые два года держат живой мир. Игровой цикл из одной строки в кроне, дюп ресурсов и атомарный захват, мёртвые кнопки, которые пережили все тесты, выпиленный из проекта Python и честный ответ — какой стек я взял бы сегодня.

Читать далее

Перенёс антиспам из Telegram в Макс — через месяц бота удалили. Что я понял про платформу

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели57K

В декабре 2024 я запустил антиспам-бот для Макс — по той же схеме, что уже годами работает в Telegram. Через месяц платформа удалила бота без объяснений. Поддержка отвечала: «работаем над вашим вопросом, ждите». Досудебная претензия заказным письмом — разблокировка и ответ в духе «вы согласились с правилами при регистрации».

Если вы разработчик ботов и думаете зайти в Макс — ниже не обзор «какие у меня продукты», а разбор того, что реально ломается на платформе и какие архитектурные решения пришлось собрать на ходу. Два кейса: антиспам (перенос TG-логики) и «Почтальон» (мост Макс ↔ Telegram), который родился уже после блокировки.

Читать далее

Создание сервера для онлайн ММО игр на PHP ч. 17 — внедряю ИИ: механики из одного описания

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели15K

Несколько лет я в одиночку пишу сервер для своей 2D MMO RPG. Эта часть — про то, как изменился сам процесс разработки: игровую фичу я по-прежнему придумываю сам, а реализую её уже не один.

Это не демо в духе «модель выдала сниппет». Внутри — настоящая 2D MMO RPG: авторитарный сервер реального времени, тайловые карты, клиент на Unity. ИИ не создал эту систему, а ускорил: то, что раньше занимало дни и недели, теперь укладывается в часы и дни, и в одиночку я держу темп целой команды. Расскажу по порядку, как я к этому пришёл и где у подхода честная граница.

Читать далее

Первый раз — в первый класс

Время на прочтение4 мин
Охват и читатели13K

Сразу сошлись тут у меня два первых опыта - первый опыт публикации проекта в open source, который был впервые в жизни "навайбкоден" по заданию самому себе.

Если вдруг вам интересен свой собственный мессенджер на своём PHP-хостинге - заходите почитать.

Раньше мы с коллегой пользовались для совместной работы над проектами (электронных разработок) таким проектом как Asana. Наблюдали ее развитие последних лет 7-8 изнутри бесплатного аккаунта. Создавали свои проекты, в них задачи, привязанные к срокам исполнения, ну - и набивали файлами-фотками в процессе разработок.

Ну, а теперь в существующих реалиях Интернета в РФ - стали думать как бы эту всю информацию накопленную сохранить и продолжить использовать в работе, но поближе к себе... И возникла у меня идея самому себе поставить задачу первого опыта вайбкодинга такой вот не самой малой системы для своего личного использования, такую как Asana - по сути, свой мессенджер, но привязанный к задачам.

Тем более, что shared-хостингов уже в пользовании штук пять под мелкими проектами. Я сторонник того, что в ожидании "косяка клиентов" достаточно иметь малые shared-хостинги под каждый проектик, или даже под каждого клиента, чтобы его данные и доступность сервиса была независима от других. Ну а на VDS переходить когда уже есть нормальный коммерческий договор.
Ну, а значит, надо попробовать наваять такую систему именно в условиях shared-хостинга, с ее ограничениями.

Понимание web-технологий самое общее, конечно есть, но по моему мнению, достаточное для создания такого проекта максимум процентов на 10. Поэтому вся надежда на "эти ваши нейросети", в процессе самообучения. Ну, и при такой "кроильной" задаче главное условие поставил сам себе - что эксперимент будет полностью бесплатный, т.е. без покупки какого-либо платного доступа к ИИ-агентам.
Т.е. я решил сам себя замучить именно в режиме бесплатного чата с нейросетями, становясь копипастером кода 80-го уровня.

Почитать далее

Mini Bucket 3.6.2: от беты к релизу. Полная установка со скринами и комментариями

Время на прочтение6 мин
Охват и читатели6.6K

Почему Debian 9, PHP 7.0 и никаких фреймворков. И как поднять HTTPS за 5 минут

Предисловие для тех, кто не читал первую статью

В прошлый раз я рассказал, как хотел сделать две странички для SAMBA и NFS, а получилась панель управления NAS на 20+ страниц. Проект назвал Mini Bucket.

Важно: та версия была бета. Сырая, с недоработками, но живая. Её задача — показать концепцию. А народ заинтересовался. Значит, надо доводить до ума.

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

Но сначала — кратко о том, что изменилось. А потом — чистая практика....

Читать далее

Интеграция xdebug в свой проект idea

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели5.7K

Одной из первых задач, когда я начинал разработку idea, была интеграция xdebug в свой инструмент разработки и реализация основных возможностей работы дебагера. Первым делом надо было изучить документация по протоколу xdebug. В нем используется общий протокол дебагера DBGP. В целом ничего сложного, есть сокет через который мы отправляем команды в сам xdebug он нам отвечает в формате xml, парсим xml и получаем результат. Все просто подумал Я, но как всегда не без приключений.

Первая проблема возникла от недопонимания в какой момент создается сокет, тот самый порт 9000. Читаем документацию пункт 5.3 и 5.4 первый говорит про стандартный порт второй пункт говорит о инициализации подключения и что xdebug отвечает при готовности объектом <init>

Читать далее

Почему Claude Code и Codex не ускоряют команду: у компании нет общей памяти

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели18K

Компании уже оплачивают сотрудникам Claude Code, Cursor или Codex, но не всегда видят рост производительности.

Проблема часто не в модели, а в том, что знания о процессах, решениях и ошибках остаются на локальных компьютерах сотрудников.

Разбираю, зачем команде общая память, и при чём тут GBrain, OpenBrain и обычные Markdown-файлы.

Научиться работать с контекстом

Внедряем BX.UI.AccessRights.V2: современный интерфейс прав доступа Битрикс24 для своего компонента

Уровень сложностиСложный
Время на прочтение15 мин
Охват и читатели6.3K

В процессе кастомизации коробочной CRM Битрикс24 часто клиенты просят внедрить им права доступа. Захотелось внедрить с интерфейсом, как это выглядит в Задачах или Сделках. Изучил документацию — там всё изложено лишь в общем виде, пришлось анализировать исходники, сжечь несколько миллионов токенов различных нейронок, и даже после этого вникать в нюансы и дебажить код.

В статье подробно разбираются нюансы архитектуры компонента BX.UI.AccessRights.V2, подводные камни при внедрении в свой модуль (готовый репозиторий прилагается).

Читать далее

OTel Collector в кастомизации Битрикс24: подключаем Observability

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели8.4K

Рассказываем про инструмент для наблюдения за кастомизациями Битрикс24 — телеметрическую инфраструктуру на базе OpenTelemetry Collector. Для проектов Битрикс24 эту роль выполняет репозиторий github.com/bitrix-tools/b24-ai-starter-otel.

В статье объясним, зачем это надо, подключим Collector к уже существующему приложению чат-бота и покажем, как работает и выглядит сбор метрик.

Это статья из цикла туториалов, где мы показываем полезные вещи, которые можно сделать на своём портале с помощью стартер-кита для ИИ-ассистированной разработки: github.com/bitrix-tools/b24-ai-starter.

Что мы уже сделали и разобрали в других статьях:
Пишем первое приложение с AI-стартером, чтобы видеть прибыли и убытки
Добавляем в бизнес-портал Битрикс24 роботов для автоматизации
Что даёт воспроизводимая среда разработки и как развернуть контейнеры на VPS.
Анализ и модернизация коннектора баз данных с помощью AI-агентов
Создание чат-бота в портале Битрикс24 с помощью AI-агентов
Как стартер-кит может стать стандартом разработки
— OTel Collector в кастомизации Битрикс24: подключаем Observability (вы здесь)

Читать далее

Как не потратить полдня, прикручивая Юмани-оплату к сайту

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели6.3K

Спойлер: кажется SHA1 устарел, а туториалы этого еще не знают

Привет всем.
Для контекста: я не программист. Я гуманитарий, который до безумия боится цифрового неравенства, которое уже наступает. Поэтому, вооружившись AI‑агентом (Cursor) и бесплатными Claude, Gemini, DeepSeek пытаюсь быть в тренде (некоторые называют это вайб‑кодингом). Признаться я тоже думал, что это что‑то легкое, «вайбовое» — главное, все внятно описать, что ты хочешь. Но по факту в том, что происходит, всё равно приходится разбираться самому.

Свежий пример моих «грабель» — решил прикрутить оплату ЮМани.
Казалось бы, ЮМани, всё придумано до меня. Но есть нюансы...

Читать далее

Wild World, два года спустя: как заброшенная текстовая MMORPG в Telegram получила второе дыхание

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели6.8K

Полтора года я не трогал код — а люди продолжали сами находить игру, регистрироваться и играть. Рассказываю с реальными цифрами, что технически изменилось в моей текстовой MMORPG в Telegram за два года и почему проект получил второе дыхание.

Читать далее

Какие проблемы чаще всего ломают кастомизации Битрикс24 после перехода на ORM и PHP 8

Уровень сложностиСредний
Время на прочтение16 мин
Охват и читатели8.5K

Пятница, 18:00. Вы обновляете PHP на сервере с 7.4 на 8.0 — что может пойти не так? Деплой проходит, страница обновляется, и вместо привычного портала вы видите белый экран с TypeError: array_search(): Argument #2 ($haystack) must be of type array, null given. Мессенджер разрывается от сообщений: «Ничего не работает». Знакомо?

Читать далее

Ближайшие события

AI для PHP-разработчиков. Часть 7: Экосистема AI-агентов в PHP – от простых вызовов OpenAI до мультиагентных платформ

Время на прочтение8 мин
Охват и читатели12K

За последние два года в экосистеме PHP вокруг AI-разработки сформировалась целая индустрия. Если раньше интеграция LLM выглядела как несколько строк кода с вызовом OpenAI API, то сегодня разработчики строят полноценные агентные системы: с памятью, инструментами, workflow, наблюдаемостью (observability) и даже командами специализированных агентов.

Обычно, когда говорят об AI-разработке, в первую очередь говорят о Python. Тут полно интересных вещей, таких как: LangChain, LangGraph, CrewAI, AutoGen – весь основной шум долгое время происходил именно там.

Но параллельно интересная история развивается и в PHP. И меня это, безусловно, очень радует.

Причем если еще пару лет назад PHP-разработчику приходилось буквально собирать все вручную поверх SDK провайдеров, то сегодня уже существует полноценная экосистема инструментов разного уровня абстракции – от клиентов для работы с моделями до платформ управления многоагентными системами.

Давайте посмотрим, как выглядит этот рынок сейчас.

Читать далее

UUID мертв? Да здравствует Smart ID! Почему ваш проект заслуживает лучшего

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели10K

В этой статье я поделюсь опытом проектирования идентификаторов для крупной медицинской системы. Мы пройдем путь от простых автоинкрементов до UUID, ULID и в итоге создадим гибридное решение, которое оказалось лучше всех существующих подходов. Спойлер: идеальный ID — это не технология, а архитектура.

Читать далее

Как я хотел две странички для SAMBA и NFS, а сделал полноценную панель управления NAS на 20+ страницах

Время на прочтение4 мин
Охват и читатели16K

Как я хотел две странички для SAMBA и NFS, а сделал полноценную панель управления NAS на 20+ страницах

Читать далее

Как я написал плагин для WooCommerce под Yandex YCP или как купить в 1 клик из Алисы

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели8.3K

В конце мая Яндекс открыл Yandex Commerce Protocol для всех — теперь онлайн-магазины могут подключать продажи через Алису AI, Поиск и Яндекс Ритм. Из коробки готовые решения есть для Яндекс KIT, Яндекс Маркета и 1С-Битрикс. Для WooCommerce — нет. У меня магазин на WP, и я написал плагин сам. Open-source, GPL-2.0, все 10 эндпоинтов протокола закрыты. Разбираю архитектуру: как боролся с письмами “новый заказ на 0 ₽”, зачем идемпотентность по session_id, как сделать совместимость с HPOS-хранилищем заказов, и пара других граблей, в которые наступил.

Читать далее

Обновление Битрикса через миграции: как не словить инсульт, нажимая «Обновить»

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели9.1K

Привет! Меня зовут Артем Валевич, я тимлид в AGIMA. Данная статья про битрикс, а конкретно про его обновление. Казалось бы, что может быть проще, чем нажать на проде кнопку «Обновить» и дождаться полного обновления системы? Но чем проект больше и старше, тем сильнее хочется прочитать какую-нибудь молитву перед тем как это сделать. Если повезло — выдыхаем и радуемся обновлению. Если всё пошло «как всегда», то распаковываем бэкапы и пробуем снова.

В некоторых случаях такой подход граничит с безумством. В какой-то момент мы устали от ритуалов и сюрпризов при обновление Битрикса на проде и придумали новый способ — обновление через миграции. Ниже я расскажу, как это вообще работает и почему обновляться с кнопки может быть затруднительным.

Читать далее

Альтернативы Centrifugo для Laravel: Reverb, Pusher, Ably, Socket.IO, SSE и polling

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели5.6K

Заключительная часть серии статей про Laravel + Centrifugo и как его готовить.

Сравниваем альтернативы Centrifugo для Laravel: Reverb, Pusher, Ably, Socket.IO, SSE и polling. Разбираем плюсы, минусы и сценарии выбора real-time решения.

Читать далее

Миграции конфигурации Битрикс24 CRM: как мы перестали делать это руками

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели6.2K

Если вы разрабатываете на Битрикс24 и поддерживаете несколько окружений — тест, стейдж, прод — вы знаете эту боль. Настроил воронку, добавил пользовательские поля, написал робота с десятком условий, всё это поправил в карточке, назначил права. А потом нужно повторить то же самое на проде. Руками. Забыв половину.

Конфигурация CRM — это не код. Она живёт в базе данных, не попадает в git, и нет адекватного механизма переноса между окружениями. При этом объём этой конфигурации на реальных проектах значительный: десятки смарт-процессов, сотни пользовательских полей, сложные роботы с условиями, матрицы прав доступа, кастомные виды карточек. Всё это нужно как-то синхронизировать.

В Битрикс24 есть разрозненные инструменты для переноса отдельных частей настроек — штатный экспорт некоторых сущностей через интерфейс, партнёрские модули, закрывающие часть задач. Но каждый работает по-своему, покрывает свой кусок, и ни один не даёт того, что нужно на реальном проекте: полного покрытия CRM-конфигурации в одном инструменте, версионируемого вместе с кодом.

Мы прошли этот путь и в итоге написали набор Version Builder'ов для модуля sprint.migration, покрывающих основные сущности CRM Битрикс24. В этой статье — о самой задаче, подходе и подводных камнях.

Пишите в личку по вопросам.

Читать далее