Обновить
128K+

PHP *

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

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

Реанимация легаси: как мы заставили древний SEO-сервис говорить на другом языке

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

У каждого второго разработчика или QA есть сервис, который написан на древней версии языка, не имеет авторов, тесты не работают, документация — одна страница, но он стабильно работает, и его все боятся трогать.

А потом прилетает задача: добавить мультиязычность, или новый тип данных, или интеграцию с внешним API. И вы понимаете: либо вы его трогаете сейчас, либо он ломается сам через полгода в самый неподходящий момент.

Нам в Иви "повезло" оказаться именно в такой ситуации. Поэтому делимся своим кейсом по тестированию и обновлению SEO-сервиса — без пафоса, с шишками, метриками и выводами, которые реально помогут.

Читать далее

Новости

Плагин шорткодов для Joomla

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

Приветствую, коллеги!

Хочу представить вам плагин Joomla Shortcoder, который я разработал, чтобы упростить работу с шорткодами в Joomla.

И, так как в Joomla шорткоды широко не применяются, на всякий случай проясню что это такое.

Шорткод (англ. shortcode — короткий код) — это удобный способ добавить в текст статьи динамический контент или сложные HTML-элементы, не захламляя редактор громоздким кодом. Вместо того чтобы вставлять, скажем, полноценный <iframe> с кучей параметров, вы используете короткий и понятный тег.

Читать далее

LOTIS, «Шпионка» и кризис среднего возраста

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

Я в свои NN-лет решаю вопросы с кризисом среднего возраста просто: получаю второе высшее в театральном. Поскольку учусь я очно с толпой милых зумерш, то волей неволей заразился их вайбом.

В одно время между парами по актерскому и сценречью у нас образовался перерыв в несколько часов, и зумерши притащили небезызвесную игру «Шпион». Реализована она была на минималках даже для web-а из 90-х: нужно было внести список играющих, а потом передавать смартфон по кругу для получения персональной инфы. Интерфейс текстовый.

Кто не знает правила, напомню: все, кроме одного игрока (шпиона) узнают некое слово, место, историческое событие. В процессе общения нужно задавать друг-другу вопросы, чтобы вычислить того, кто не имеет представление, о чем речь, поймать шпиона. А шпион должен вести себя так, чтобы его не заподозрили, и по этим всем разговорам постараться угадать, о чем все знают и говорят. В общем, выигрывает либо шпион, правильно угадавший общий секрет, либо добропорядочные граждане.

Вопросы могут быть самыми разными: Это на улице или в помещении? Это для детей или взрослых? Можно ли на этом ездить? Это едят? И т. д.

«Шпион», при всей кажущейся его простоте забавлял нас много дней. Но мне, как айтишнику со стажем большим, чем те, с кем я учусь, было дико видеть, как для игры, явно претендующей на сетевую, нужно передавать чей-то смартфон из рук в руки. Так получилось, что я в это время активно работал над своим LOTIS, о котором писал здесь уже. И вот в какой-то из вечером я сделал сетевого шпиона, чем несказанно удивил своих коллег, будущих актеров. Заодно и протестировал LOTIS в режиме чата.

Читать далее

Лечение амнезии между AI-сессиями разработки

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

Статья о том, как решить проблему «забывчивости» LLM между AI-сессиями разработки. Рассматривается причина деградации контекста и предлагается практический подход с использованием ai_readme файлов и агентских хуков, которые принудительно возвращают модель к важным инструкциям. Материал ориентирован на опытных промт-инженеров и показывает, как повысить стабильность и качество генерации кода в реальных больших проектах и при больших контекстных окнах.

Читать далее

Как навести порядок в запросах Laravel с помощью кастомных Query Builders

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

Про кастомные Query Builders в Laravel написано уже немало, но на практике мало что меняется. В 2026 году в проектах по-прежнему можно встретить запросы, разбросанные по всему коду - в контроллерах, сервисах и моделях. В такой структуре быстро теряется понимание, что происходит и где искать нужную логику.

Узнать что такое кастомные Query Builders

Fast Atomic Flow: PHP 8.4, Swoole, NATS, Go и Закон Табуна

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

Как переезд в деревню, рефакторинг жизни и парное программирование с DeepSeek привели к созданию демо на Swoole, NATS и Go. Без купюр и без пони.

🐎 В галоп!

Почему RBAC недостаточно: опыт построения тарифно-зависимой системы доступа в SaaS или о чём молчат в статьях компаний

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

Тема разграничения доступности действий в рамках конкретного тенанта выходит далеко за рамки ERP домена и требует особо пристальной реализации. Это особенно применимо для коммерческих систем (коей и является Kroncl - название системы), в которых классический RBAC требует определённых доработок, включающих адаптацию к упрощённой features-based access control (в народе - FBAC, является своего рода реализацией ABAC). Кроме того, технологические компании крайне редко (уникальные случаи всё же есть) посвящают публичные статьи внутреннему устройству своих систем тарификации, что крайне печально, ведь это буквально могли быть рассказы о том, как архитектурные решения напрямую влияют на маркетинг и как следствие доходность компании.

Как же строить системы определения доступа не вокруг конкретных действий, а экономической модели платформы? Как легко переусложнить то, что переусложнять априори не стоит? Где заканчивается гибкость и начинается ад поддержки?

Читать далее

Никакой магии: только лексер, парсер и интерпретатор на чистом PHP

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

Вы вроде бы пишете код на чистом PHP, но почему-то каждый день используете маленькие языки: DQL в Doctrine («u.age > 18»), Twig-выражения («user|length > 0»), Symfony ExpressionLanguage («user.is_active and order.total > 100`). Никогда не возникало мысли о том, что хорошо бы избавиться от всех этих дополнений и использовать язык собственной разработки для решения нужных задач?

В этой статье мы рассмотрим DSL — язык, заточенный под узкую задачу.

Разобрать DSL

Реактивные серверы, или как перестать писать JavaScript и начать жить

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

Обзор Phoenix LiveView и его друзей из других стеков: Rails Hotwire, Laravel Livewire и Go Live/HLive

Все эти фреймворки позволяют создавать динамические страницы без ручного вызова API (и без AJAX :)

Неужели совсем без JS?!

Проектирование иерархии моделей данных в многослойном приложении

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

При проектировании многослойной архитектуры приложения одной из главных задач является формирование набора моделей данных каждого слоя и определение порядка взаимодействия моделей данных между собой. Под взаимодействием понимаются потоки данных, передаваемые из одной модели данных в другую. В общем случае взаимодействие между моделями данных двунаправленное.

Рассмотрим модель данных application model, которая потребуется в дальнейшем изложении и которая используется в паттерне CQRS.

Реализация архитектурного паттерна CQRS, используемого в приложении для функционала application logic, представляет собой набор классов наследников базовых классов QueryHandler / CommandHandler и набор классов данных, которые являются наследниками базовых классов Query / Command. Классы наследники Query / Command представляют собой модель данных application logic. Такую модель данных логично назвать application model.

Используя application model и другие известные модели данных слоёв приложения можно построить полную схему моделей данных многослойной архитектуры приложения.

Читать далее

Я устал читать 100+ сообщений в Telegram и написал бота, который делает саммари и отвечает как AI-ассистент

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

Всем привет, меня зовут Ян, я разработчик. Мне интересно следить и участвовать в дискуссиях на разные темы: разработка, devops, it стартапы, чаты друзей, собственников жилья — не важно). Все эти обсуждения живут в Telegram и в Max в том числе, но сейчас речь про Telegram.

Однажды утром я проснулся и увидел в чате друзей 127 новых сообщений. Чтобы понять, о чём вообще был разговор, мне нужно было:

— Пролистать весь чат.
— Прочитать десятки реплик.
— Восстановить контекст обсуждения в своей голове.

В какой‑то момент появилась простая мысль:
«Почему нельзя просто получить краткое саммари обсуждения прямо в личку по подписке или увидеть сводку в чате? Чтобы бот прочитал всё за меня и выдал краткую, но понятную выжимку».

Читать далее

Анализ и модернизация коннектора баз данных с помощью AI-агентов

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

4-я статья из цикла туториалов о вариантах кастомизации своего бизнес-портала в Битрикс24.

Сегодня рассказываем о работе с уже существующим проектом через AI-агентов. ИИ хорошо справляется с созданием новых приложений, но при работе с готовыми проектами чаще возникают сложности — например, при разборе архитектуры и внесении изменений без поломок

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

Читать далее

Очерки установки Zabbix на Lubuntu

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

В начале Апреля 2026 года устанавливал я Zabbix 7.4, самой новый на тот момент, на LUbuntu v. 25.10 - тоже самой новой на начало апреля.

Выбрал пакетный вариант установки.

Читать далее

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

LOTIS: Новая парадигма WEB-разработки для бизнес-приложений

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

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

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

Читать далее

Laravel + TrueAsync: настоящая конкурентность без Swoole

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

В 2025 году в PHP отклонили RFC про нативные корутины. Автор не сдался и продолжил работу - так появился TrueAsync, расширение которое добавляет в PHP настоящую асинхронность без изменений в коде приложения.

Я решил запустить на этом Laravel. Фреймворк проектировался под FPM-модель и совершенно не готов к тому что один воркер будет обрабатывать тысячи запросов параллельно.

Как это починить без клонирования контейнера, почему PDO Pool даёт настоящую конкурентность которой нет в Swoole, и что получилось в бенчмарке против Octane.

Читать далее

Я потратил 10 лет на создание легкого PHP фреймворка для разработки WEB-приложений

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

Привет, All!

Как вам идея, отказаться от тегов вообще и делать WEB-проекты исключительно на классах? А еще, чтобы и клиентский, и серверный коды шли рядом, как в десктопном приложении.И чтобы с одними и теми же переменными можно было работать и в PHP, и в JavaScript.

«Зачем?» — сапросит кто‑то. Отвечу: чтобы можно было строить не DOM‑элементы, а объекты предметной области бизнес‑процессов, которые автоматизирует мое приложение. И чтобы не тратить время на разные async, promise, ajax и так далее, пусть за это отвечает фреймворк!

Я говорю примерно вот о таком построении WEB-приложения:

Читать далее

Когда Excel — это часть архитектуры, или история одной не совсем обычной интеграции

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

Есть одна мебельная фабрика. Исторически у этой фабрики IT хозяйство было не очень развито и со временем накопилось множество внутренних сервисов для расчета материалов, нагрузки на станки, учета временных затрат работников, доставки и прочего. Исходя из этих расчетов составляется себестоимость продукции. Далее накладывается маржа, и идет расчет доставки и сборки, в зависимости от условий. Фабрика захотела объединить все сервисы в один, основанный на веб, чтобы все расчёты и результаты можно было видеть в одном месте. Было выбрано делать новую веб систему на фреймворке Symfony (PHP).

Читать далее

Отказались от идеального решения, чтобы всё начало работать: мы сделали игровую платформу без опыта в разработке

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

Отказались от идеального решения, чтобы всё начало работать: мы сделали игровую платформу без опыта в разработке

Привет! Я Алина Бриленкова, руководитель онлайн-направления в ивент-агентстве NIGHT STREET. В 2022 году я взялась делать игровую платформу для онлайн-тимбилдингов, марафонов и конкурсов без опыта в IT. Думала, что разработка — это спринт: сделал и выдохнул. Оказалось, что это миф, и на самом деле этот процесс вообще не заканчивается.

Довольно быстро стало понятно, что продукт собирается не из того, что ты сделал, а из того, от чего ты отказался. Хотелось создать продукт для ивент-индустрии с идеальной архитектурой с микросервисами, но мы решилипойти простым путём и не ошиблись. 

В этой статье — о проблемах Телеграм-ботов как систем управления участниками, решениях, от которых пришлось отказаться на первых этапах разработки и о том, как на практике происходит создание продукта с нуля, если ты заходишь в разработку не из IT. Будет полезно тем, кто сам через это проходит. Остальным — статья может понравиться как формат «под похрустеть попкорном».

Читать далее

Как мы сделали PWA для управления ремонтными проектами: от чата до ИИ-дизайнера интерьеров

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

Привет, Хабр! Меня зовут Алексей, я разработчик в строительной компании ВитионГруп. Мы занимаемся ремонтом квартир в Москве, одновременно ведём 30–75 объектов, за 18 лет завершили более 1000 проектов.

В 2022 году я начал разрабатывать внутренний инструмент для управления ремонтными проектами. За три года из «чата с заказчиком» вырос полноценный продукт: PWA с чек-листами и таск-трекером, видеонаблюдением, конструктором смет, финансовым модулем и интеграцией с ИИ. Сейчас на базе этой системы работают два продукта по подписке, которыми пользуются строительные компании, а также частные мастера и их заказчики из разных регионов России и Казахстана.

Читать далее

От рефакторинга до психотерапевта: как мы переписывали карточку задачи в Битрикс24

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

Привет! Никита Щербо на связи, backend-разработчик и тимлид в Битрикс24.

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

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