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

PHP *

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

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

Действительно умные сессии и авторизация

Время на прочтение3 мин
Количество просмотров11K
Добрый день. Увидев статейку на тему «умных сессий», я решил поделиться действительно умной схемой, которая по всем параметрам превосходит предложенную.

Задача
Реализовать оптимальную систему пользовательских сессий и авторизации, с возможностью «Выйти на всех компьютерах». Защитить систему от сбоев (перезагрузки memcached), обеспечить эффективное использование памяти.

Читать дальше →

PHP — получение суммы прописью

Время на прочтение2 мин
Количество просмотров57K
Здравствуйте!

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

Пример использования:
num2str(878867.15); // восемьсот семьдесят восемь тысяч восемьсот шестьдесят семь рублей 15 копеек

Далее сам код…
Читать дальше →

Zend Studio и CVS/SVN

Время на прочтение2 мин
Количество просмотров2.6K
Доброго времени суток всем хабраридерам. Хотел бы с вами поделиться своим опытом по настройке Zend Studio на работу с репозитарием системы контроля версий (CVS/SVN). Хабралюди, имеющие сведения по этой теме могут отписаться в комментариях был ли их путь так тернист как мой, либо где-то в инете нашли они сопутствующую доку.
Читать дальше →

Тестирование производительности c PHPBench: что и как?

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

PHPBench - это, кажется, крайне не популярный фреймворк для тестирования производительности кода на PHP. По крайней мере за 18 лет он мне ни разу нигде не встретился, а услышал об нём примерно года назад. Фреймворк PHPUnit-подобный, где бенчмарки, как и тесты из PHPUnit объединяются в классы, группы и т.д. и т.п. Чтобы много не болтать, давайте напишем чуть кода и отбенчмаркаем его.

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

Читать далее

Мосты цифрового мира: клиент-сервер, сервер-сервер

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

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

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

Читать далее

The Clean Structure — Универсальная структура PHP-проекта на примере Laravel

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

К написанию этой статьи меня подтолкнуло изучение архитектурных подходов для Vue.js-проектов, а вдохновила - детально описанная методология Feature-Sliced Design.

К сожалению, PHP-сообществу не хватает подобных развернутых рекомендаций, да и вообще, каких-то общепризнанных стандартных подходов в структуре проекта.

Моя статья - это попытка обобщить изученную мною за много лет информацию и сформировать универсальную структуру проекта, основанную на принципах Clean Architecture и модульного монолита.

Читать далее

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

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

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

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

Читать далее

Автоматизация CQC на CI

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

В эти дни проходит внутренняя конференция Aventus IT. И я там был, мёд пиво пил… Шучу. Выступал на тему автоматизации контроля качества кода. И хочу представить вам статью по материалам своего выступления.

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

Со своей стороны, хочу поговорить, про контроль качества кода помимо тестов.

Читать далее

Создание списка выбора конфигураций 1С, опубликованных как веб-приложения

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

Новая задача, связанная с 1С. Дано: сервер 1С, на нём есть несколько конфигураций 1С, опубликованных как веб-приложения. Нужно создать удобный список для выбора той конфигурации, с которой пользователь будет работать.

Читать далее

Профайлинг Laravel приложений с XDebug и PHPStorm

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

Профайлинг приложений важный этап перед релизом ресурсоёмкой фичи. Везде трубят про удобную отладку PHP-приложений при помощи XDebug и PHPStorm, однако напрочь забывают про замеры времени операций, которые, порой, превышают те самые 3 секунды, которые пользователь будет ждать на странице. Если у Вас есть метод API, который долго работает, самое время его проверить профайлером XDebug, а PHPStorm поможет красиво визуализировать и изучить файл профиля.

Начнём профайлинг

Как и почему в 2024 году мы разрабатываем сайты для крупных клиентов на WordPress?

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

WordPress — это изначально блоговый движок, который появился в 2003 году во времена расцвета LiveJournal и MySpace. Благодаря большому количеству внутренних шаблонов, он стал идеальным инструментом индивидуального паблишмента, позволял быстро собрать свой блог и начать писать. 

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

Читать далее

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

Создание шаблонов сайта в Joomla 4+

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

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

Читать далее

Наследование Entity в Doctrine

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

В практике разработки веб-приложений иногда возникает необходимость расширения сущностей, которые представляют таблицы базы данных в коде. Для примера рассмотрим следующую ситуацию: в нашем проекте была реализация класса автотранспортного средства Car, но спустя некоторое время появилась возможность ввести еще один класс автотранспортного средства под названием Buggy. Новый класс, имел одинаковые поля и представлял схожую концепцию. Нам важно было иметь возможность работать с ним как с объединенным типом Auto, а также как с отдельным типом.

Читать далее

LaraКурс для начинающих расхитителей гробниц

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

Laravel – один из наиболее популярных фреймворков для разработки на языке PHP. Если вы только начинаете свой путь в Laravel и хотите освоить этот мощный инструмент, то курс LaraКурс на YouTube может стать отличным помощником для вас. Курс разработан специально для разработчиков, которые не знакомы с Laravel и включает в себя все необходимые знания и навыки, чтобы начать создавать современные продукты на этом фреймворке. Его записал бэкенд-разработчик нашей Студии Флаг – Алексей Смирнов, который имеет богатый опыт в разработке на Laravel. В данной статье мы рассмотрим основные характеристики курса и то, что вы можете ожидать от него.

Читать далее

Экономный APM для backend или как использовать Loki+Grafana+логи приложения для APM

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

Обычно процесс оптимизации типичного backend'а на php включает:

оптимизации SQL‑запросов в БД;

оптимизации работы с кэшем (повышение hitrate, увеличение объёма кэшируемых данных);

оптимизация внутренних процессов в backend (вынесение тяжёлых процессов в асинхронный режим, оптимизация внутренних структур данных)

Всё это уже было проведено, но не давало достаточного эффекта - API был большим, в нём было много сервисов с разной логикой, сложностью и связями. Точечные улучшения давали эффект, но было желание посмотреть на весь backend сверху - оценить потоки данных, оценить создаваемую нагрузку на каждый из внешних хранилищ (БД, кэш, сервисы) и оптимизировать исходя из полученных данных.

Читать далее

Elastic APM для PHP-разработчиков: Используем APM c Laravel и Lumen

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

APM расшифровывается как Application Performance Monitoring (мониторинг производительности приложений). Если на вашем пути встречается эта аббревиатура, то речь скорее всего идет о измерении производительность вашего приложения и ваших серверов. Как они справляются, сколько памяти они потребляют, где узкие места? И это далеко не все. С помощью APM можно настроить специальные уведомления, которые будут оповещать вас, например, о том, что потребление памяти достигло очень высоких показателей или удаленный вызов занимает слишком много времени. Триггеры для подобных уведомлений могут опираться на довольно широкий набор показателей и событий. Но давайте не будем забегать вперед.

Читать далее

ЦУЦ — или как свести 15 тысяч товаров от разных поставщиков на коленке

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

По мере роста бизнеса и расширения ассортимента товаров, компания столкнулась с проблемой остатков товаров и актуальными ценами. Если в начале моей работы, количество товара на сайте было в районе 3 тысяч, то на текущий момент позиций более 15 тысяч. Обновлять руками такое количество позиций нереально. С чего я начал работу по автоматизации цен и с какими трудностями столкнулся читайте в моей публикации.

Читать далее

Не пытайтесь обезопасить ввод. Экранируйте вывод

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

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

Читать далее