Как стать автором
Поиск
Написать публикацию
Обновить
123.48

PHP *

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

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

Как статический анализ на основе PHPstan позволил снизить число ошибок на проекте и получить стабильный код

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

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

Читать далее

Антиспам защита для WordPress форм без ущерба личным данным посетителей

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

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

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

Читать далее

WordPress × Wavesurfer JS

Уровень сложностиПростой
Время на прочтение17 мин
Количество просмотров1.1K

WordPress × Wavesurfer JS – наконец-то дошли руки поделиться своим опытом использования wavesurfer.js в связке с сайтом на WordPress.

Читать далее

В документации PHP теперь можно выполнять примеры кода прямо на странице

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

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

Читать далее

Чат GPT в колонке Алиса

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

В последнее время мне приходится активно использовать чат GPT в своей работе, а дома для музыки и управления умным домом я использую колонки Алиса. Алиса очень удобна в использовании и управлении, однако иногда ей не хватает интеллекта и гибкости, присущих последним моделям от OpenAI. Я подключил Yandex GPT Pro с последней версией модели, но это особо не помогло. Поэтому я задумался: можно ли использовать чат GPT на колонке Алиса? Следует отметить, что я не разработчик и хотел реализовать это максимально просто, используя имеющиеся у меня ресурсы.

На первый взгляд, тема кажется заезженной — сейчас чат GPT подключают практически ко всему, разве только к утюгам. Но, как ни странно, на эту тему я нашёл только одну статью на Хабре. Вооружившись чатом GPT, я решил конвертировать код из данной статьи на Python в PHP (поскольку под PHP проще найти хостинг).

Читать далее

PHP и C: как мы заставили кассу АТОЛ 30Ф работать в веб-системе

Время на прочтение4 мин
Количество просмотров1.9K

Интеграция оборудования с веб-системами часто становится непростой задачей, особенно когда дело касается специфических устройств, таких как кассы. В одном из наших проектов потребовалось настроить взаимодействие кассы АТОЛ 30Ф с веб-приложением, работающим на PHP. Этот кейс стал для нас важным шагом в изучении возможностей автоматизации и оптимизации бизнес-процессов.

Как все начиналось

Касса АТОЛ 30Ф — это популярное решение для ритейла, но её работа традиционно рассчитана на использование с локальными системами, такими как 1С. Нам же нужно было подключить её к веб-приложению, чтобы обеспечить удалённое управление операциями.

Проблема заключалась в том, что драйверы кассы были написаны на языке C и не имели нативной поддержки PHP. Задача заключалась в том, чтобы связать веб-приложение с физическим устройством напрямую, сохранив его функциональность и производительность. Решение мы нашли в технологии FFI (Foreign Function Interface), позволяющей PHP взаимодействовать с библиотеками на других языках.

FFI: как PHP взаимодействует с C

FFI — это расширение PHP, которое открывает доступ к библиотекам на C. С его помощью можно описать функции библиотеки и вызывать их из PHP-кода, как если бы они были встроенными.

Работа началась с изучения заголовочного файла библиотеки драйвера АТОЛ 30Ф. Этот файл содержал описание ключевых функций, включая команды для управления устройством, передачи данных и получения ответов. Благодаря FFI мы смогли подключить библиотеку и использовать её функции прямо из веб-приложения.

Читать далее

Обновление Laravel 11.34: Fluent-запросы и новые возможности

Время на прочтение2 мин
Количество просмотров2.4K

На этой неделе команда Laravel выпустила версию 11.34, представив новые возможности, такие как метод Request::fluent(), хелпер Number::spellOrdinal() для преобразования чисел в порядковые слова, условное определение маршрутов, сокращенные методы для фейковых HTTP-ответов и многое другое.

Читать далее

Кодогенерация моделей и миграций в Laravel

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

Да, вместо того, чтобы ручками писать все эти скрипты миграций и в особенности классы моделей их лучше просто генерить в одно мгновение, а ни сидеть, копипастить туда‑сюда названия полей и т. п. Называется всё это термином database reverse engineering, который, как и технология судя по всему не очень то прижился, а совершенно напрасно. Под reverse engineering'ом обычно понимается генерация моделей/сущностей на основе таблиц БД. Но для Laravel есть ещё и кодогенераторы миграций.

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

Читать далее

Из легаси в конфетку: история трансформации

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

Каждый разработчик рано или поздно сталкивается с легаси-код — тем самым старым, не всегда понятным и, порой, пугающим набором строк, в которых легко заблудиться. Легаси может вызывать смешанные чувства: с одной стороны, это результат чьей-то работы и часть истории компании, с другой — постоянный вызов, требующий не просто поддержки, но и регулярных улучшений. Переделать такой код в "конфетку" — задача не из лёгких, но вполне выполнимая. 

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

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

Читать далее

Рекордсмены в Fusc последовательности

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

Анализ подходов к решению олимпиадной задачи по программированию, связанной с диатомической числовой последовательностью Штерна. Или как незадачливый программист решил стряхнуть пыль со своих навыков и попробовал решить задачу из разряда простых с сайта https://www.spoj.com/

Читать далее

Как добавить свой повторяемый элемент интерфейса в класс HTMLHelper Joomla 4+

Время на прочтение5 мин
Количество просмотров562

В API Joomla есть полезный инструмент - класс HTMLHelper. Он выводит HTML-элементы интерфейса с нужными параметрами: модальные окна, аккордеоны, табы, изображения и т.д. Для рендера мы передаём все нужные данные: заголовки окон, содержимое табов, атрибуты изображений.

Плюс использования HTMLHelper в Joomla - это его универсальность, оторванность от контекста, возможность использования логики при рендере в зависимости от вводных данных, его можно использовать везде. Но что если нам нужно создать свой собственный класс?..

Читать далее

Как сделать регистрацию и аутентификацию на сайтах под CMS ModX с помощью Exolve

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров698

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

В этой статье речь пойдет о ресурсе, основанном на CMS ModX. Обеспечивать же безопасность данных пользователей и самого ресурса поможет API-платформа МТС Exolve. Разберемся, что это за сервисы.

Читать далее

Дайджест новостей по Symfony за октябрь'2024 с Кириллом Несмеяновым

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

Обзор новостей по Symfony за октябрь. В этом обзоре Кирилл Несмеянов разберет нововведения: от полезных правил валидации Week и WordCount до именованных сериализаторов и улучшений в компоненте Messenger. Узнаете про обновления в системе переводов, работе с контейнером и Expression Language. А еще - про возможность отправлять уведомления прямо на рабочий стол. Самое время узнать, какие инструменты добавились в арсенал Symfony-разработчика!

Читать далее

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

Flutter Push-уведомления, том числе в Web

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

Добрый день!

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

В двух словах о чём статья:

С нуля мы создадим flutter-проект с подключением к push-уведомлениям. Будем отправлять уведомления не только на Android, IOS, но и на наш веб-сайт, который может рассылать уведомления в т.ч. на мобильные устройства. Нам потребуется дополнительно лишь небольшой хостинг с mysql БД и php.

Читать далее

Применение статических анализаторов архитектуры на примере гексагональной архитектуры

Уровень сложностиСредний
Время на прочтение17 мин
Количество просмотров4.6K

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

Меня зовут Никита Дергачев. Я Teamlead COOL TEAM в MedTech компании СберЗдоровье. В этой статье я расскажу, почему важно структурировано выстраивать архитектуру проектов, а также покажу на примере, с помощью каких инструментов можно отслеживать соответствие архитектуры изначальным требованиям.

Читать далее

Реализация горизонтального кеширования в PHP с Redis Cluster

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

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

Сегодня мы рассмотрим одну из задач высоконагруженных приложений — горизонтального кеширования. Когда система начинает испытывать давление под наплывом пользователей, стандартный кеш не всегда справляется. В таких ситуациях на помощь приходит Redis Cluster. Рассмотрим, как масштабировать кеширование в PHP с помощью Redis Cluster, чтобы распределить нагрузку, повысить отказоустойчивость и не потерять в производительности.

Читать далее

Битрикс: оптимизация сервиса, который помогает устранять опасности

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

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

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

Статья будет полезна архитекторам, руководителям и разработчикам.

Читать далее

Настраивать xdebug для первого запуска не нужно вообще! Как в Phpstorm запустить отладку за минуту и без браузера

Время на прочтение4 мин
Количество просмотров8.7K

Многие считают, что добиться успешного запуска отладки xdebug после его установки - тяжело и мучительно. Но на самом деле, сделать первый запуск можно менее чем за минуту, не делая настройки и даже не прикасаясь к конфигурационным файлам .ini (php.ini/xdebug.ini). Как это сделать? Об этом и пойдет речь в этой статье.

Читать далее

Laravel в 2024: статистика и тренды

Время на прочтение2 мин
Количество просмотров3.8K

Нашел интересную статью со статистикой по Laravel за 2024 год и решил поделиться ей с вами. Признаюсь честно, когда я начинал работать с Laravel (лет 5 назад), я и представить не мог, насколько этот фреймворк станет популярным. Давайте посмотрим, что говорят цифры!

Читать далее

Стоит ли идти в тимлиды? История о том, как меня повысили и что я теперь об этом думаю

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

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

Читать далее