Обновить
40.98

PHP *

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

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

Когда сидишь в PHP, а мысли — о Python: как я случайно написал свой pprint

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

Иногда маленькие вещи случаются не потому, что ты их планировал, а потому что... ну а кто ещё это сделает? Я пару месяцев подряд писал небольшие ML-прототипы на PHP (да, знаю, иногда судьба заносит в странные места), и каждый раз сталкивался с одним и тем же раздражением: массивы печатаются так, будто пытаются скрыть правду.

Я смотрю на этот разъехавшийся print_r(), и думаю: а что, если я просто хочу увидеть аккуратную табличку? А если я хочу форматирование как у Python? А если я хочу имитировать пайторчевский tensor([...])?

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

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

Читать далее

Я хотел бы знать это раньше. Очереди в Symfony

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

Привет! Меня зовут Никита Титков, я бэкенд-разработчик в Банки.ру. 

Создать простую очередь – несложная задача. Но как только очередей становится десятки и через них идут важные для бизнеса процессы, сразу появляются вопросы: как их правильно называть, чтобы не запутаться? Как организовать логирование и мониторинг, чтобы видеть, что происходит с сообщениями? Как обрабатывать ошибки? Мы сталкивались со всеми этими проблемами и решили поделиться опытом.

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

Давайте разбираться!

Читать далее

Нативный SSR для Laravel

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

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

Недавно выпустил технологию BayLang и сделал интеграцию с Laravel. BayLang позволяет компилировать фронтенд и делать Server Sider Render используя PHP, без необходимости в NodeJS.

Читать далее

Compo B2B Platform vs 1С-Битрикс Enterprise: особенности внедрения

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

Сегодня на рынке B2B/B2C‑платформ в России конкурируют два подхода. Яркие представители этих подходов, Compo B2B Platform, созданная по принципам headless‑commerce, ориентирована на модульность и микросервисный подход. С другой стороны — 1С‑Битрикс Enterprise, один из самых распространённых в России корпоративных продуктов для веб‑разработки, выросший из CMS‑системы и ставший полноценной платформой для e‑commerce и корпоративных порталов.

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

Читать далее

Мой опыт парного программирования с Chat GPT-5

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

Привет, Хабр! Про модели искусственного интеллекта сейчас не говорит только ленивый. Высказывается множество мнений и нередко они оказываются на противоположных полюсах: от полного скепсиса до убеждённости, что произошла новая научно-техническая революция. Жизненный опыт подсказывает, что истина где-то по-середине и инструмент будет полезным ровно настолько, насколько ты умеешь им пользоваться. В относительно недавнем интервью генеральный директор Microsoft Сатья Наделла заявил, что примерно 20-30 % кода в Microsoft уже сейчас генерируется ИИ и разработчикам надо будет адаптироваться. Мне тоже захотелось попробовать внедрить такого помощника в свои рабочие процессы и посмотреть, что из этого получится.

Читать далее

Архитектура Laravel: 7 ловушек и практичные решения

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

Laravel завоевал авторитет у бизнеса и программистов за эффективность решения задач. Автор не раз встречал суждение среди коллег, что опыт разработки на Symfony и Laravel равнозначны. Это миф. Ниже — 7 ловушек Laravel и практичных решений без отказа от фреймворка.

Читать далее

Создание простой поисковой системы, которая действительно работает

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

Зачем вообще делать что-то своё?

Я знаю, что вы можете подумать: «Почему бы просто не использовать Elasticsearch?» или «А что насчёт Algolia?» Это вполне рабочие решения, но у них есть нюансы. Нужно разбираться с их API, поддерживать инфраструктуру под них и учитывать все тонкости их работы.

Но иногда хочется чего-то более простого...

Читать далее

Кому принадлежит ваша CMS?

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

Несколько адаптированный перевод статьи одного из основателей Joomla - Брайана Тимена. Сохранён tone of voice автора.

Читать далее

Разворачиваем PHP проект с помощью Ansible

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

Что это за чудо-инструмент такой?

Ansible - это инструмент каждого YAML-чемпиона, с помощью него можно развертывать приложения, настраивать конфиги и автоматизации задач через ssh

Возможно, вы слышали про него вместе с фразой - Инфраструктура как код (IaC), потому что с помощью него в большинстве своем настраивают инфраструктуру

Читать далее

Собираем простейшую RAG-систему на PHP с фреймворком Neuron AI за вечер

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

RAG (Retrieval‑Augmented Generation или генерация, дополненная поиском) — это метод искусственного интеллекта, сочетающий генеративную большую языковую модель (LLM) с внешней базой знаний для создания более точных, контекстно‑зависимых и актуальных ответов. Принцип его работы заключается в том, что сначала извлекается релевантная информация из набора документов или источников данных, а затем эта информация передается в LLM для формирования окончательного ответа. Этот процесс позволяет модели выдавать более точные ответы, менее подверженные «галлюцинациям», и ее можно обновлять без дорогостоящего переобучения.

Сегодня мы разберёмся, как собрать базовую RAG‑систему на PHP (да, да, не надо удивляться) с помощью фреймворка Neuron AI. Это будет наш маленький proof‑of‑concept — минимально работающий, но вполне реальный пример.

Ну что, начнём генерацию?

Читать далее

Типизация данных в PHP, надо ли оно? Прирост скорости JIT

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

Влияет ли типизация данных на скорость работы PHP? Варианты конфигурации JIT. Не самые комплексные тесты, но результат понятен.

Читать далее

Из коробки Publish не имеет гарантий доставки в RabbitMQ

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

Привет, Хабр. Я Витя Михайлов, Backend Lead в Garage Eight, и больше 6 лет у меня RabbitMQ в продакшене. За это время мы с командой узнали много интересных вещей. О них я рассказывал этим летом, выступая на Saint Highload++ с докладом про рецепт правильного приготовления RabbitMQ. Там же я поделился 8 практическими кейсами. Сегодня в статье разберу один из них — Publish without Confirmation. Расскажу, почему из коробки Publish не имеет гарантий доставки в RabbitMQ, и что с этим делать. 

Читать далее

Сбор и отправка APM-трейсов из разных сервисов: как мы приручили трейсинг в монолитах

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

Всем привет! Меня зовут Яна Курышева, и я тимлид одной из команд разработки бэкенда в Спортсе’’.

Мы – спортивное медиа. Наш продукт – это сайт и приложения со спортивной статистикой, новостями, редакционным и пользовательским контентом, пушами, рекомендациями и комментариями.

Чтобы вся система оставалась управляемой, мы активно используем трейсинг с помощью Elastic APM. Но существующие библиотеки не учитывали специфику нашей архитектуры и не решали всех задач.

В этой статье я поделюсь, как мы справились с задачей сбора трейсинга из старых монолитов и реализовали собственный APM-прокси.

Читать далее

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

Как я создаю idle-игру «Империя Кузбасс» для Telegram, VK и браузера

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

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

Игра на 80% сделана с помощью вайб кодинга, но это не так просто как звучит.

Читать далее

Работа с Bitrix Framework

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

Платформа Bitrix Framework созданная компанией «1С-Битрикс» является одним из наиболее распространенных решений для разработки веб-приложений. Это набор готовых модулей и компонентов, из которых разработчики могут создавать свои продукты. Платформа написана на PHP, что требует от разработчиков хорошего владения этим языком программирования.

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

Перейти к разбору Bitrix Framework

PHP-веб-панель для Amnezia VPN: ускоряем корпоративную автоматизацию

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

Под катом расскажу, как реализовал свою web-панель для управления Amnezia AWG (WireGuard) VPN на Ubuntu 22–24. Почему не хватило официального приложения, какие задачи решил с помощью простого PHP-интерфейса и чем это может быть полезно другим компаниям или разработчикам. Код и инструкции — в открытом доступе.

Проект на GitHub: amneziavpnphp

Читать далее

Малоизвестные уязвимости PHP: что скрывается за строками кода

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

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

PHP – один из самых популярных языков веб-разработки. Благодаря экосистеме фреймворков (Laravel, Symfony, Yii) и обширному опен-сорсу он остаётся выбором №1 для быстрого вывода приложений. При этом сообщество в основном концентрируется на классических уязвимостях (SQL-инъекции, XSS, CSRF, LFI/RFI). Тонкие особенности интерпретатора, малоизученных расширений и встроенных механизмов нередко остаются вне поля зрения. В этой статье мы подробно рассмотрим малоизвестные опасности и способы защиты от них.

 

Читать далее

Пакет управления доступом на основе ролей (RBAC) для PHP

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

Потребовалось мне сделать свою реализацию проверки прав для PHP. В итоге эта разработка стала отдельным пакетом. Возможно кому-то пригодится. В статье рассказываю как это работает.

Читать далее

Как мы в коробках рассылки разгоняли

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

Привет, меня зовут Степан Золотухин, я разработчик в Битрикс24. Моя команда работает над такими продуктами, как Почта, Маркетинг, Структура компании, Подписание, CRM-Формы и Бизнесс процессы.

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

В дефолтной конфигурации отправка идёт нативным PHP через функцию mail() (если у отправителя не задан SMTP). Дальше всё идет в инфраструктуру пользователя (exim, sendmail, postfix И так далее)
Это просто и надёжно, но скорость отправки упирается в ограничения при отправке в один поток.

Читать далее

EAV Bundle

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

Искал реализацию EAV (Entity-Attribute-Value) паттерна на PHP или Symfony и не нашел. Типичная задача, но, на удивление, нет таких библиотек. Решил сделать свою [EAV bundle](https://github.com/maxkain/eav-bundle). Есть достаточно подробная документация...

Читать далее