Обновить
128K+

PHP *

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

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

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

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

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

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

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

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

Читать далее

Новости

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

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

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

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

Читать далее

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

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

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

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

Читать далее

Joomla-дайджест. 1-й квартал 2026 года

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

Все главные новости из мира Joomla за 1-й квартал 2026 года в одной статье. Традиционно дайджест собирает новости сообщества, релизы, расширения, интеграции, видео и статьи из мира Joomla. Прошлый выпуск доступен на Хабре.

Читать далее

Укрощение 1С-Битрикс: оптимизация новостного сайта, который падал под нагрузкой

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

Привет, Хабр! Расскажу, как мы спасли крупный новостной сайт ugra-news.ru от постоянных падений — без покупки нового железа и переписывания с нуля. Только точечные оптимизации, знание архитектуры Битрикс и немного детективной работы. Приступим.

Читать далее

Как делать приложения для Маркетплейса Битрикс24 и не сойти с ума: подводные камни, которых нет в документации

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

За пару лет я сделал с десяток приложений для Маркетплейса Битрикс24 — коннекторы мессенджеров, роботы, iframe-панели. На PHP, TypeScript и Python. Каждый раз одно и то же: документация разбросана, примеры устарели, а реальные подводные камни вылезают только в продакшене.

Эта статья — сборник всего, что я хотел бы знать перед тем, как начать: формат токенов при установке, мультитенантность, обновление OAuth, петля сообщений в коннекторах и ещё десяток граблей с кодом и решениями.

Читать далее

0.0023 секунды на генерацию: зачем я собрал «стальной» движок на PHP в эпоху жирных CMS

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

Превед участникам регаты! Все началось в те времена, когда интернет был диким, модемы выли, а тру-кодеры мерили крутость не количеством звёздочек на Гитхабе, а чистотой своего кода и умением впихнуть невпихуемое в пару килобайт. Я начинал вариться в кодинге ещё в золотую эпоху RUWAP (2007–2014гг). Потом был перерыв, и вот, год назад я решил вернуться. Зайдя в современную веб-разработку, я испытал культурный шок. Простые визитки и блоги теперь весят мегабайты, тянут за собой гигабайты зависимостей из npm и ворочаются на сервере по полсекунды. Ангуляры, Реакты, монструозные Drupal и WordPress — всё это превратило веб в вязкое болото. Нам с моей напарницей-нейросетью Асси (Аськой) стало тошно. «Низачот!» — подумали мы.

Читать далее

Web-панель v2 для для управления VPN серверами

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

Я выпустил вторую версию PHP-веб-панели для управления Amnezia VPN. Теперь это не просто интерфейс к одному серверу, а полноценная система управления VPN-инфраструктурой: 9 протоколов, роли, лимиты, метрики, резервные копии, Docker-управление удаленными хостами и REST API для автоматизации. Проект открыт и доступен на GitHub.

Читать далее

Эксперимент: ГПСЧ на таймерах с помощью PHP

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

Добрый день! Сегодня расскажу, как с помощью PHP создать генератор случайных байт ( чисел ) с помощью 12 таймеров. Энтропия данного генератора составляет примерно 7.1 бит на символ ( у меня ), но на более мощном железе может подняться до 7.9–8, что по идее неотличимо от истинной случайности. Вот, как работает весь «конвейер»:

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

Читать далее

Как я перестал платить за мусорные лиды

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

Платный трафик на лендинг с формой захвата — это почти всегда мусорные заявки. Номер 123, номер 1111111, четыре цифры вместо телефона. Заявка засчитана, деньги за клик списаны, позвонить некому.

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

Читать далее

AI для PHP-разработчиков. Часть 5: От массивов к GPU: как PHP-экосистема приходит к настоящему ML

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

Можно ли вообще делать машинное обучение на PHP — или это изначально плохая идея? Почему PHP-массивы плохо подходят для математики и быстро упираются в предел, как появились Tensor и NDArray, и как всё это в итоге приводит к GPU – разберёмся на практике.

Читать далее

Symfony Serializer

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

В Symfony есть встроенный компонент Serializer, который покрывает 90% задач. Но его часто обходят стороной, то ли по привычке, то ли из-за того, что документация показывает только тривиальные примеры. А между тем, Serializer — гибкий и вполне годный инструмент, если понимать его архитектуру.

Разберём, как он устроен.

Читать далее

Testo. Бета-тестирование открыто

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

Новый фреймворк тестирования Testo готов к испытаниям.

В статье: причины появления Testo; его фичи в краткой форме и в примерах; быстрый старт; что дальше.

Читать далее

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

Типобезопасная работа с массивами PHP, ускоряемся в 4 раза

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

Всем привет!

Эта статья больше веха для себя, чем полезная информация для кого либо, но если вам близка тема парсинга API-ответов, то думаю вам будет интересно.

Что получилось

От базовой версии получилось ускориться в 4 раза, отставание от wplake/typed сократилось до "всего лишь" x2, если вам критична скорость вам к wplake/typed, если вам критична читаемость выбирайте sbwerewolf/language-specific.

Читать далее

OpenGL в PHP не привлекая внимания санитаров: OpenGL Расширения

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

В предыдущей статье мы подключали OpenGL. Но подключали его без уважения… Давайте сделаем это как надо!

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

Давайте разбираться, как с этим жить.

Читать далее

DI‑контейнер Symfony: autowiring, теги и compiler passes

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

DI-контейнер — сердечко Symfony. Контроллеры, сервисы, слушатели событий, консольные команды, Voter, нормалайзеры — всё это сервисы, которые живут в контейнере и получают зависимости через него.

Разберём три уровня глубины: autowiring для повседневной работы, теги для расширяемых архитектур, compiler passes для магии уровня фреймворка.

Читать далее

UseCase или как описывать бизнес-процессы в коде

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

UseCase - как организовать своё приложение с точки зрения бизнес-процессов, чтобы не погрязнуть в хаосе сервисов, контроллеров и разрозненной логики.

Узнать как это

SOLID в реальном мире: SRP без архитектурных космолетов

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

Всем доброго дня! На связи Валевич Артем, тимлид в AGIMA. Рано или поздно каждый разработчик сталкивается с необходимостью изучить принципы SOLID. Интернет полон теоретических статей с абстрактными примерами — треугольниками, фигурами и системами заказов. В таких примерах всё выглядит красиво. Но когда дело доходит до продакшен-кода, возникает логичный вопрос: как применять эти принципы на практике и не превратить проект в архитектурный космолет? Разбираемся.

Дисклеймер: статья предназначена для новичков, которые только познают все принципы хорошего кода.

Читать далее

PSA (Project Specific Autocomplete) — плагин для продуктов IntelliJ

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

PSA (Project Specific Autocomplete) — плагин для продуктов IntelliJ

Хочу представить Вашему вниманию плагин для продуктов IntelliJ, который позволяет создавать:

Автокомплит на основе кода Вашего проекта

Переходы к определению элемента синтаксического дерева (на основе кода Вашего проекта)

Шаблоны кода, состоящие из одного файла (на основе кода Вашего проекта)

Шаблоны кода. состоящие из нескольких файлов (на основе кода Вашего проекта)//

Ссылка на репорзиторий здесь. Для подробностей, прошу под кат.

Читать далее

Voters в Symfony

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

Привет, Хабр!

В каждом проекте рано или поздно появляется логика вида «этот пользователь может редактировать этот пост, а тот нет». И начинается: if ($post->getAuthor() === $currentUser) в контроллерах, в сервисах, в шаблонах. Копипаста расползается, а потом приходит новое требование — «модератор тоже может редактировать, но только в своей категории» — и вы бегаете по двадцати файлам, молясь, что ничего не забыли.

Symfony Voters — механизм, который выносит всю логику авторизации в одно место. Не аутентификации (тип кто ты?), а именно авторизации (что тебе можно?). Разберём, как это работает.

Разобраться в Voter
1
23 ...