Обновить
128K+

PHP *

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

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

Практическое махоботоводство в 2026 году. Часть 2: библиотека для yii2

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

Это вторая публикация на тему практики махоботоводства. В первой были рассмотрены общие вопросы создания ботов в MAX, некоторые отличия Bot API от аналогичного у Telegram и Hello, world на чистом PHP. Здесь начнём освоение обещанной в первой части библиотеки. Чтобы не перегружать сегодняшний материал, рассмотрим установку библиотеки, опишем учебную задачу по отправке запросов через Bot API и разберём выполнение её первой части. Остальное оставим на последующие публикации; пока не знаю, сколько даже их всего будет (если, конечно, успею всё здесь опубликовать, пока всякие злобные не заминусовали карму).

Читать далее

Новости

Модульная архитектура против хаоса: как ограничить контексты в большом монолите

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

При большом масштабе компании требования к стабильности и скорости разработки становятся критичными. Долгое время бэкенд платформы Flowwow оставался монолитным, и в какой-то момент это начало серьезно тормозить развитие продукта. В этой статье я расскажу, как мы пришли к модернизации, как поменяли архитектуру и что получилось в итоге.

Читать далее

Технический и продуктовый мониторинг за кастомизациями Битрикс24: как настроить и на что смотреть

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

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

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

Читать далее

Как я писал Телеграм-бота. На Вордпрессе

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

Вы возможно будете смеяться, но таки да, однажды я на полном серьёзе решил написать Телеграм-бота, использовав в качестве движка WordPress. В итоге это всё зашло настолько далеко, что вылилось в полноценный плагин. Его можно использовать как для интеграции сайта с Телеграмом, так и для быстрого создания автономных Телеграм-ботов, не связанных с веб-проектом.

Сразу оговорюсь, что плагин, о котором пойдет речь, рассчитан в первую очередь на разработчиков. Для обычного администратора Вордпресса там функций пока мало.

Я знаю что к PHP и к Вордпрессу некоторые относится как минимум неоднозначно, а как максимум пренебрежительно. Но уверен, что во многих случаях бот на Вордпрессе это отличное решение.

Читать далее

«Fix typo»: как в PHP закоммитили бэкдор и почему composer install — это акт доверия

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

Каждый composer install — это акт доверия: вы запускаете на CI и в проде код, который собрал и опубликовал кто‑то другой, а проверяете обычно лишь хеш в composer.lock. Но хеш отвечает на вопрос «тот же ли это байт, что вчера», а не «кто и из чего его собрал».

Реальные инциденты показывают цену этого доверия: в 2021-м в исходники PHP закоммитили бэкдор от имени Расмуса Лердорфа; в xz вредонос жил в release‑архиве, которого не было в git; у популярного GitHub Action переписали теги и слили секреты из тысяч пайплайнов. Между кодом на ревью и артефактом в вашем vendor/ — длинная цепочка, и атаковать можно любое звено.

В статье сначала разбор: как устроены эти атаки и почему GPG, хеши и composer audit закрывают цепочку лишь частично. Затем ответ индустрии — Sigstore: подпись без управления ключами. И главное — практика на PHP: подписываем релиз в GitHub Actions без единого секрета, проверяем эталонным gh, из CLI и прямо из кода с типизированным SLSA‑провенансом, мониторим журнал Rekor. С рабочим кодом и честной моделью угроз: что подпись ловит, а что нет.

Разобрать цепочку поставок ПО

OpenAPI без #[OA\...]: как я сделал генератор документации для Symfony

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

В прошлой статье я уже рассказывал, как однажды устроился на работу и получил пачку «интересных» задач: вручную синхронизировать OpenAPI, оформленный в комментариях к коду, с самим кодом в десятке сервисов.

Тогда это звучало как начало анекдота, но мне было не до смеха.

С тех пор я сменил работу. И, как будто вселенная решила проверить моё чувство юмора, я снова вижу API, где контракт живёт рядом с кодом в ручных #[OA\...] атрибутах.

И это важный момент. Это не история про одну конкретную компанию, один неудачный проект или один старый сервис, который все боятся трогать. Я вижу этот подход в разных местах.

Читать далее

Мы сделали игровую платформу без опыта в разработке. Рассказываем, как она устроена

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

Продолжаем рассказывать о том, как создали онлайн-платформу Playforma. Сегодня смотрим и разбираемся, что у нее внутри.

Читать далее

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

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

Это история про то, как боль из реальной жизни превращается в код. Без стартап-питчей, без «мы дизраптим рынок», без раунда инвестиций. Просто человек, который двадцать лет назад писал на PHP, вернулся к коду — и довёл проект до рабочего состояния, потому что иначе его команда так и продолжала бы путаться на служениях.

Приложение называется Prayer & Worship. Оно бесплатное — и остаётся таким для всего, что нужно команде на служении. Ниже расскажу, как оно появилось, на чём держится и где проходит та единственная граница, за которой бесплатно уже не получится.

Читать далее

Практическое махоботоводство в 2026 году. Часть 1

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

Всем привет. Последние несколько месяцев (где-то с февраля-марта) мне пришлось активно взяться за разработку чатботов для MAX. Когда только пытался изучить в прошлом году эту тему, поиск материалов по этим вопросам дал несколько странные результаты: вроде что-то есть и описано, а бота создать «сейчас не получится, попробуйте позже». Эту проблему впоследствии частично решили, но актуальности материалам, на мой взгляд, не то что прибавилось, и тема скорее игнорируется. Поэтому для тех, кому ставятся такие задачи, задумал несколько публикаций по практике создания чатботов в MAX, а также поделиться своей библиотекой для yii2 (она уже есть и вовсю используется в production на нескольких проектах, но пока не в полном объёме, сейчас активно дорабатывается и причёсывается; к следующей публикации надеюсь дописать и выложить).

Читать далее

Передача значений переменной из PHP в JavaScript

Время на прочтение1 мин
Охват и читатели13K
Здравствуйте уважаемые читатели. За ранее хочу сказать, что это мой первый пост и не судите очень строго.

Сегодня пост будет посвящен передачи значений переменной PHP в JavaScript — сценарий.
Этот урок подойдет самым новичкам, тем кто только начинает заниматься Web — программированием.
Для начала создадим обычный документ index.php и его каркасом будет служить простой HTML код.
Читать дальше →

Два года один пилю MMORPG на CI4: пять багов, за каждым из которых стоял живой игрок

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

Строка “false” в PHP равна true. Я узнал это, когда рубильник, которым я выключаю фичи перед живыми игроками, полгода отказывался выключаться. Два года в одиночку пилю текстовую MMORPG на CodeIgniter 4: мир дышит раз в минуту по крону, 485 выживших, 45 тысяч боёв. Пять багов — и за каждым стоял реальный человек по ту сторону экрана.

Читать далее

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

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

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

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

И......

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

Несколько лет я в одиночку пишу сервер для своей 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.5K

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

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

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

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

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

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

Читать далее

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

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

Одной из первых задач, когда я начинал разработку 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.2K

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

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

Читать далее
1
23 ...