Как стать автором
Обновить
86.27

PHP *

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

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

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

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

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

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

Читать далее

Новости

WordPress × Wavesurfer JS

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

Читать далее

Истории

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

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

Интеграция оборудования с веб-системами часто становится непростой задачей, особенно когда дело касается специфических устройств, таких как кассы. В одном из наших проектов потребовалось настроить взаимодействие кассы АТОЛ 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 мин
Количество просмотров1.8K

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

Добрый день!

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

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

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

Читать далее

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

2 – 18 декабря
Yandex DataLens Festival 2024
МоскваОнлайн
11 – 13 декабря
Международная конференция по AI/ML «AI Journey»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

Внедрение методики решения проблем 8D на производственном предприятии в виде SRM/ERP-систем/Часть 1

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

На подготовку данной заметки меня натолкнула картина, которую я наблюдал совсем недавно в скоростном, двухэтажном поезде АО «ФПК» по направлению Новороссийск-Москва. Состав из 15 новых вагонов, произведенных на Тверском вагоностроительном заводе (ТВЗ, входит в состав АО «Трансмашхолдинг»). Серийно их делают с 2011 года, на рельсы они встали в 2013.

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