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

PHP *

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

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

Magento 2. Добавление картинок в динамический массив

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

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

Читать далее

Дженерики в PHP

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

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

Давайте поговорим о том, что такое дженерики, почему PHP их не поддерживает и что, возможно, нас ждёт в будущем.

Читать далее

«Афиша7» – интегрировать 4 API, чтобы разродиться собственным

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

В конце декабря 2019 года передо мной стояла задача разработки агрегатора культурных событий. Решение предполагало создание 2х инструментов: для добавления мероприятий на сайте, для сбора и предъявления актуальных данных о планируемых событиях.

В обзоре я кратко опишу основные этапы разработки, сложности реализации проекта.

Читать далее

Идеальный каталог, замеры производительности

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

Всем привет.

Я разрабатываю библиотеку для работы с Entity Attribute Value (репозиторий), сокращенно EAV (модель базы данных для хранения произвольных данных). В конце прошлой статьи я спросил у вас о чём мне ещё надо написать, вы попросили показать пример использования и сделать замеры быстродействия.

Что для нас важно при работе с данными ? Скорость записи (добавления или обновления) и скорость чтения (конкретно - фильтрации по моделям одной сущности). При чём скорость поиска в приоритете, потому что записываем мы один раз в цать дней, а читаем каждую минуту/секунду и даже не один раз, а может быть и не одну сотню раз.

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

В Новогодние каникулы я сделал замеры производительности и хочу с вами поделиться результатами

Что будем измерять ?

Чтение:

Время вычитывания всех позиций категории

Время формирования параметров фильтрации

Время фильтрации

Запись:

Время добавления новой характеристики (атрибута)

Время добавления новой товарной позиции (модели)

Время обновления товарной позиции

Читать далее

Автоматизация бизнес-процессов своими руками

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

У нас было: N различных систем, которые обращались друг к другу напрямую; M маркетологов, которые генерировали идеи, хотели проводить разные тесты и часто предлагали подключить какой-нибудь новый сервис; и K менеджеров по продажам, у которых было много рутинной работы.

Все это порождало проблемы по поддержке и ошибки человека.

Решение: автоматизация и инкапсуляция бизнес-процессов. Разработать систему, которая снимет с людей рутину и уменьшит количество ошибок, ускорит работу, которую будет просто поддерживать и масштабировать.

Узнать технические подробности

Автоматическая документация по коду для API в Laravel

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

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

Ждать долго не пришлось, при обновлении на сервере PHP c 7.2 до 7.4 - мы получили страницу с описанием ошибки, вместо документации. Ошибка найдена в библиотеке, которую мы использовали для рендеринга UI документации. ПР на гитхабе был создан быстро, но провисел в статусе open почти неделю. После этого, тикет насчет документации пошел в работу.

Читать далее

Велосипед длиной в полжизни

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

Да, именно так: я начинал писать основу PHP движка в 2001-ом году. 

Тогда всё было проще: каталог inc/, в нём header.php, footer.php, common.php.

Но это было скучно и неинтересно, надо было ещё больше фишек, которые я бы мог предложить заказчикам. Так появился раздел admin/. Но примерно в тоже время  появился PHPNuke, это была бомба! Такой уровень кастомизации! Я понял, что ничего подобного я предложить не смогу, но и по требованиям мой движок был куда как проще, хотя позволял организовать каталог товаров, список статей, галерею. Несколько лет я дальше двигался по основной своей работе: администрирование Linux-серверов. 

Читать далее

Обзор сервисов для получения актуальных курсов валют

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

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

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

Поехали

Laravel–Дайджест (7–13 сентября 2020)

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

Страсти по Laravel UI — сообщество против Тейлора. Лучшие практики безопасности Laravel-приложений. Уроки по новым возможностям восьмой версии фреймворка. Подробный обзор Laravel JetStream.


Laravel Дайджест

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

Перенос почты между серверами через интерфейс пользователя посредством IMAPSync

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

В этой статье будет рассмотрен способ переноса почты между разными серверами с помощью утилиты IMAPSync через примитивный интерфейс пользователя.

Процесс миграции передаем пользователю по причине запрета организацией использовать пароли от почтовых ящиков сотрудников в скрипте. Для этого разработан web-интерфейс пользователя.

Читать далее

Synology SSO Server – управление авторизацией и доступ к сервисам с сайта

Время на прочтение3 мин
Количество просмотров7.3K
Некоторое время назад передо мной встала задача, в целях защиты коммерческой тайны своих клиентов, отказаться от использования сторонних облачных сервисов.

Первое и самое логичное – предоставить им доступ на уже имеющийся в наличии Synology.

И тут возникло желание сделать это красиво, не отдельным логином/паролем, а с использованием уже выданных ранее от личного кабинета. «Бесшовный» переход из личного кабинета на сервисы Synology – то, что нужно.

Описание и скрипт под катом.
Читать дальше →

Сущности (entities) и сервисы (services) как основа распределенной логики для MVC шаблона проектирования

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

Laravel-Дайджест (20–26 июля 2020)

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

Подборка новых статей по фреймворку Laravel. Посмотрим доклады с Laracon. Подивимся визуальному генератору кода Vemto. Изучим Event Sourcing. Узнаем, как добиться финансового успеха c Laravel. Отпразднуем новую версию Laravel Excel и 20 миллионов скачиваний.


Laravel Дайджест

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

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

Как сделать фронтенд в три раза быстрее и когда применять команды вместо репозиториев? Видео

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

В Харькове прошёл Magento-митап, и на нём прозвучали доклады Робина ван Раана, Александра Шкурко и Максима Грома. В них много полезного. Ловите.


Робин ван Раан рассказал о новейших практиках оптимизации RequireJS. С их помощью фронтенд сайта можно ускорить в 3 раза!



Александр Шкурко рассказал, в каких случаях лучше использовать команды вместо репозиториев в Magento 2. Всё это проиллюстрировано лучшими, на мой взгляд, картинками!



Максим Гром коснулся скользкой темы ныряния в Magento DI. Многим это тоже будет полезно.


Первый бот на PHP для ВКонтакте

Время на прочтение4 мин
Количество просмотров24K
Здравствуйте, хабровчане. В этой публикации я напишу о том, как сделать своего первого чат-бота для ВКонтакте. Думаю, что опытным программистам это будет не интересно, а вот тем, кто только начинает свой путь, будет интересно, так как я ещё и сам не очень далеко ушёл и понимаю проблемы начинающих. И предупреждаю сразу, что большинство скриншотов будет на английском языке.
Читать дальше →

Миграция проекта с yii1 на yii2 через единовременную работу

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


«Пару раз» пришлось занимать миграцией проектов с yii1 на yii2 и хочу поделиться с сообществом своим опытом. Ничего сложного в этом процессе нет и откровений не будет. Характер публикации — свой опыт + tutorial для начинающих.

Предпосылки


Если проекты, исторически сделанные на первой версии yii, продолжают развиваться, то каждому разработчику, который с ними работает рано или поздно приходит мысль: "как было бы хорошо, если бы это было на yii2".

Но дальше мыслей дело, обычно, не идет т.к. объем работы представляется колоссальным. В целом, так оно и есть, объем огромный, но все-таки не запредельный — по поговорке «глаза боятся». Плюс для перехода к действиям нужно определенная сила воли (к миграции первого проекта я, внутренне, готовился почти год).

Моя идея миграции — под катом.
Читать дальше →

Sonata Import Bundle

Время на прочтение5 мин
Количество просмотров5.2K
До сих пор одной из самых лучших админ панелей для Symfony является SonataAdminBundle, и не зря. Простая установка, конфигурация, множество фич “из коробки” и большое сообщество.

Единственное, что в ней отсутствует, так это импорт файлов. Согласитесь, немаловажная функция.

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

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

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

Простой, современный MVC фреймворк на PHP для разработки сайтов «с нуля»

Время на прочтение5 мин
Количество просмотров29K
Цель данной статьи — поделиться опытом по написанию простого ООП MVC PHP фреймворка. Так же хочу предоставить сообществу исходный код и попросить критики, одобрения, замечаний и поддержки.

Введение


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

Как показала дальше практика: читать, знать, слышать о чем-либо, и уметь самому это реализовать — совершенно разные вещи. Теоретизировать можно бесконечно, но только настоящее практическое задание позволяет понять, на каком уровне ты находишься. Всвязи с этим и было начато «написание собственного велосипеда». Каким он получился — судить вам.
Читать дальше →

Авторизация в Laravel, через социальные сети (Ulogin). Просто, гибко и эффективно

Время на прочтение4 мин
Количество просмотров19K
Привет, друзья. Хочу сегодня поделится своим взглядом на то, как можно сделать простую и эффективную авторизацию/регистрацию пользователей через любую социальную сеть, используя плагин Ulogin. Почему через этот плагин? Потому что он может избавить разработчика от кучи головной боли, которая возникнет при синхронизации с каждой социальной сетью в отдельности. Плюс вы сможете получить данные из плагина в едином красивом формате.
Читать дальше →

GUI для php, или скрещиваем написанное расширение с скриншотером

Время на прочтение5 мин
Количество просмотров4.1K
Речь в данной статье пойдёт, о практическом применение расширения gtkPHP7, написанное нами ранее в данной статье, и srcphp(скриншотера на php) Написаного в этой статье. С момента публикации статьи, где мы писали расширение gtkPHP7 прошло несколько дней. И я думал как построить эту библиотеку, что бы она была в духе php. Простой и удобной в использование, а так же могла удовлетворить (пока только мои) потребности в ней. За подробностями прошу под кат.


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