
КриптоПро предоставляет мощные, но неудобные для автоматизации утилиты. CryptoProBuilder — это fluent-интерфейс на PHP, который упрощает подписание, шифрование и работу с сертификатами, без необходимости использовать сложный SDK.
Скриптовый язык общего назначения
КриптоПро предоставляет мощные, но неудобные для автоматизации утилиты. CryptoProBuilder — это fluent-интерфейс на PHP, который упрощает подписание, шифрование и работу с сертификатами, без необходимости использовать сложный SDK.
Использование MVC — это удобная отправная точка для небольших и средних проектов. Он прост, широко понятен и поддерживается большинством фреймворков. Однако по мере роста продукта MVC становится архитектурным тормозом: он нарушает принципы модульности, затрудняет тестирование и ведёт к плотной связанности компонентов.
После переезда в США мой английский был на уровне A1. Вместо курсов и приложений я решил создать собственный языковой тренажёр и заодно прокачать себя как fullstack-разработчика. В статье рассказываю как я парсил словари, получил бан, внедрил геймификацию и достиг уровня B2 за год.
PhpFluentConsole — библиотека для лаконичного выполнения системных команд в PHP, с поддержкой кодировок, обработкой вывода и гибкой архитектурой. В статье — примеры, код и реальные кейсы.
«Будем отправлять события в Rabbit!» Фраза, которая выдает мышление, рождающее код, полный боли. К сожалению, я ее часто слышу. Поэтому, уже много лет размышлял о написании этой статьи и безумно рад, что у меня, наконец, дошли до нее руки.
В статье я расскажу, как смешение понятий события, сообщения и транспорта рождает возгласы типа «Я ненавижу использовать Symfony Messenger, потому что был у меня проект на нем, и он не взлетел!»
Будут косвенно затронуты компоненты Symfony Messenger и Event Dispatcher. Несмотря на это, данный материал может оказаться полезным и для разработчиков, использующих другие фреймворки и даже другие языки.
Привет, Хабр!
Сергей Пантелеев и Данил Щуцкий собрали новости за май в PHP и Laravel. Всё самое интересное. Если вы хотите быть в теме происходящего, этот материал точно для вас. 🚀
Привет, Хабр! Сегодня хочу поделиться опытом создания универсальной системы для работы с пользовательским контентом, которая позволила нам избежать дублирования кода и создать масштабируемое решение.
Свежие доклады о PHP, игра «Было/не было», факап-разгоны и розыгрыш слонов — так прошел четвертый Пыхап, который мы с каналом Пых организовали в офисе Lamoda 19 июня. Делимся материалами со встречи.
Чтобы не пропустить новые митапы от Пых, следите за анонсами и трансляциями в Telegram-канале, на YouTube и VK. А 19 сентября приглашаем на Пых.конф’25 — новую PHP-конференцию для всех.
В рамках инициативы поддержки и популяризации open-source в России, я выложил в открытый доступ минимально жизнеспособную версию (MVP) своей галереи готовых решений, которая призвана упростить запуск проектов для малого бизнеса, разработчиков и энтузиастов.
Если объяснить просто — это некий аналог WordPress, но не для сайтов, а для готовых решений и данных, которые можно устанавливать и разворачивать буквально за пару минут.
Первое опубликованное решение — Telegram-бот для автоматического сбора брифов от клиентов.
PHPBench - это, кажется, крайне не популярный фреймворк для тестирования производительности кода на PHP. По крайней мере за 18 лет он мне ни разу нигде не встретился, а услышал об нём примерно года назад. Фреймворк PHPUnit-подобный, где бенчмарки, как и тесты из PHPUnit объединяются в классы, группы и т.д. и т.п. Чтобы много не болтать, давайте напишем чуть кода и отбенчмаркаем его.
Я пошагово опишу всё, чтобы вы могли быстро повторить всё это у себя. Вначале создаём директорию в которой будем химичить и переходим в неё:
Привет, Хабр! Меня зовут Александр Белышев. Хочу немного вам рассказать о библиотеке (Laravel Zipkin Tracer), которую разработал изучая трейсинг в php. Рассмотрим что собирает, как собирает и сравним ее с OpenTelemetry.
Когда наш стартап на базе платформы FreelanceSpace перерос первоначальный этап, перед нами встал вопрос об автоматизации процессов разработки и деплоя. Раньше мы вручную собирали и выкатывали обновления, но с ростом нагрузки это становилось узким местом. При этом внутри команды не было DevOps-специалиста, и я понял, что самостоятельно не справлюсь — нужен сторонний эксперт. Решение пришло само собой: найму фрилансера с нужными навыками. В качестве площадки для поиска я использовал собственный сайт FreelanceSpace – IT-фриланс-платформу, «№1 для быстрого подбора разработчиков, дизайнеров и копирайтеров»
. Здесь можно было быстро разместить задание и собрать отклики.
Поиск и выбор исполнителя
Я начал с составления краткого описания задачи (в DevOps-терминах это была настройка CI/CD-процессов: сборка, тестирование и деплой). Затем проанализировал несколько вариантов поиска специалиста:
Биржи фриланса. На крупных площадках (например, Upwork или аналогах) легко найти DevOps-инженеров. Как советует опытный специалист, при подборе лучше ориентироваться на рейтинг: «чем он выше, тем лучше»
. Я изучил профили нескольких фрилансеров, особенно смотрел отзывы и выполненные проекты.
Тематика и опыт. Обращал внимание на конкретные технологии в портфолио (Docker, Kubernetes, Jenkins/GitHub Actions и пр.) – мне был важен опыт именно в CI/CD.
Коммуникация. Пообщался с несколькими кандидатами, чтобы оценить, как они понимают задачу. При первой же беседе заметил, кто задаёт уточняющие вопросы и предлагает идеи – такие специалисты внушали больше доверия.
Давным-давно, когда Joomla ещё была маленькой, в неё внедрили параметр $live_site
. В ней хранился домен текущего сайта на случай, если Joomla не могла его определить из-за неверной настройки сервера. Нужно это было для разных SEO-компонентов, для использования редиректов и т.д.
Со временем для работы собственно сайта этот параметр перестал быть нужным. Уже в начале 2010-х стали встречаться рекомендации оставлять этот параметр пустым, дабы оный не привёл к лишним проблемам и путанице. Тем более, в web-админке нет места, где его можно указать или посмотреть его значение. Только в configuration.php, а туда смотрят не часто.
Однако, параметр всё же остался в ядре Joomla. Зачем он нужен?
Или как я доставлял расписание студентам в новом формате решая несколько проблем, используя парсинг и PHP 7 в 2017-2021 годах.
Недавно состоялся у меня небольшой спор с коллегой, активно защищающим анемичные модели с размещением логики в сервисах. Несколько лет назад я и сам был последовательным фанатом такой разработки, пока не стал спотыкаться об ограничения этого подхода. В этом тексте хочу поделиться с вами плюсами и минусами анемичных моделей, как их вижу я.
В этой статье разберем, как PHP работает со строками и почему даже простой вызов strlen()
может привести к неожиданным результатам. На примере крайне простой задачи "что выведет echo strlen('привет!');
" посмотрим, что и как влияет на подсчет длины строки, заглянем внутрь реализации strlen()
и развенчаем миф о строках как массивах.
Задача в телеге
В одной группе телеграмма с задачами по PHP недавно встретил простой вопрос: что выведет код «echo strlen(‘привет!’);»?
Был вопрос и 4 варианта ответа.
Вроде бы все просто. Но правильно ответили лишь 16%. Наиболее популярным ответом оказался «7», что неверно. Но именно его дали 71% ответивших.
Вчера тестировал мой агент DepthNet на реальных моделях. Это что то вроде "операционной системы для LLM моделей" В прошлой статье пользователи просили привести диалоги, и рассказать подробнее, и тогда я решил более полно осветить вопрос.
В мире php-ходящих есть мнение, что первое, что сказал Иисус Христос придя в этот мир: "исключения - зло".
Конструкция по типу try { .. } catch (Exception $e) { ..$e->getMessage() }
знакома каждому 5 человеку в мире и воспринимается как неотъемлемая часть любой логики на php.
И что в этом такого?
Ничего, кроме того, что из чёткой цепочки обработки запросов ваш код быстро превращается в коллекцию try catch
на каждой 3 строке. Это не кажется проблемой до того момента, как дело не дойдёт до разделения приложения на отдельные слои во благо SOLID. Представьте, что в вашей команде >1 человека и все они работают над разными слоями, которые должны между собой взаимодействовать. В подобных ситуациях все участники должны документировать все созданные методы, а так же возвращаемые исключения. И да, это хорошо, но зачастую документация исключений становится невыносимой. Таким образом ваша работа обрастает ненужным слоем прокидывания исключений, которые к слову нужно ещё и создать.
С развитием технологий, мир стал более взаимосвязанным. Сердцем этой взаимосвязи являются коммуникации между различными устройствами и системами. В данной статье мы рассмотрим два основных типа взаимодействий: клиент-сервер и сервер-сервер.
Для наглядной демонстрации рассмотренных механизмов коммуникации, я подготовил небольшое демонстрационное приложение. Вы найдете практические примеры реализации описанных выше подходов, что позволит глубже понять их особенности и выбрать наиболее подходящий для ваших задач.
Создал экспериментальную систему DepthNet, где AI-агент мыслит циклично, то есть непрерывно, может выполнять PHP-код, управлять своей памятью и живет автономной цифровой жизнью. Протестировал на Claude 3.5 Sonnet — результаты понравились.