Блог - PHP

MageConf 2017

16 декабря 2017 г в Киеве прошла конференция по разработке на Magento - Mageconf 2017

Я посетил эту конференцию в рамках работы в компании "220 Вольт"

От нашей компании на конференцию поехали 3 человека. Иван Кулик - директор интернет магазина, Федор Зубков - project manager, Антон Шелыганов - PHP/Magento разработчик.

Вылетели из Санкт-Петербурга в пятницу 15 декабря, в 14:45. Летели компанией БелАвиа, с пересадкой в Минске, поскольку рейсов из России на Украину нет. Перелет получился немного утомительным, зато много кормили.

Фильтр матерных слов для сайта

В данном посте решается задача обнаружения мата в комментариях. Впринципе можно сделать с помощью stop words. Эти списки есть в открытом доступе. Но, как правило, списки неполные. И уж точно не учитывают все возможные словоформы

В итоге многие матерные слова все равно идут мимо фильтра. На помощь приходят анализаторы. Всего мне попалось 2 анализатора, которые работают неплохо(смотрел варианты на php).

Пишем CRUD-генератор для Magento 2

Создание GRUD и связанной логики в Magento 2 может быть непростой задачей.

Достаточно прочитать это руководство, чтобы понять это.

Постепенно привыкаешь и все это уже выглядит не так сложно. Но, если ты только начал работать с magento, то создание grid в админке magento напоминает ритуал воскрешения сатаны. Если же понадобится сделать еще один модуль с grid, то весь процесс придется повторить.

Интеграция Magento 2 и Elastic Search

В нашем проекте DIY price мы используем Magento 2 в качестве ecommerce движка. Сначала пытались делать проект полностью на magento но в итоге пришли к headless режиму. Frontend написан на VueJS, отделен от magento и взаимодействует с ней по Rest API. Такой подход приносит определенные сложности - многое нужно продумывать самому, нехватает некоторых методов api и т.д. В то же время упрощает работу frontend разработчиков, дает больше гибкости. Настраивать тему magento под свои нужды иногда может быть непростирой задачей. В конечном итоге headless архитектура оправдывает себя.

В качестве поискового движка планировали использовать Elastic Search. Причем в нашем случае мы можем даже обращаться к нему напрямую, тем самым разгружая magento. К тому же мы используем Magento Enterprice и его поддержка заявлена из коробки. Правда начинали мы разработку на Comunity Edition и искали возможности интеграции уже в этот момент.

Подсветка кода в markdown с помощью GeSHi

Всем привет! Сегодня расскажу про подсветку кода в markdown файлах. То, что описано в этой статье, Я использую непосредственно на этом сайте. Для отображения этой самой статьи!

Вероятно, проще всего сделать блог на wordpress. Но я же все-таки - программист!. Поэтому я предпочел сделать его на Symfony. Оба подхода имеют свои преимущества и недостатки. Так, например, мне удобнее писать статьи не в админке, а в IDE. И хранить все тексты не в базе данных, а в файлах под git.

Автотесты в Magento 2, часть 1

В этой статье речь пойдет про автоматическое тестирование в CMS Magento 2. Использовалась Magento 2.2

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

Если мы делаем крупный проект на Magento с большим количеством самописных модулей, то, наверняка, в какой-то момент захочется писать автотесты.

Автотесты в Magento 2, часть 2

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

У нас есть модуль. Пусть это будет личный кабинет. Но в отличии от стандартного модуля magento, это будет rest api. К нему можно будет подключить свой frontend.

Тесты будут лежать в папке Tests Здесь будут Unit тесты, Интеграционные тесты, вспомагательный код и фикстуры.

Laravel downloader app

Всем привет. Не так давно делал тестовое задание для одной компании. Вакансия Senior PHP Developer, на удаленку. Нужно было сделать web сервис на Laravel, который будет загружать ресурсы по http.

Примеры использования Elastic Search

Всем привет! Недавно сделал демонстрационный проект, который содержит основные наработки по Elastic Search. Реализовал примеры функционала, который был сделан в рамках последних проектов.

В демонстрационном проекте есть примеры обычного и нечеткого поиска, фильтрации, агрегации, поиска с синонимами, динамического обновления настроек индекса, подсветки поисковых запросов, поиска с учетом руской морфологии, поиска с учетом стоп-слов и поисковых подсказкок. Также есть примеры поиска по документам(PDF, DOC, XLS и т.д.) с помощью ingest плагина.

Генерация кода из командной строки в Yii2

Всем привет! В этой статье рассмотрим генерацию кода для Yii2 из командной строки. С Yii я работаю достаточно давно, еще с первой версии. Одной из интересных особенностей фреймворка является встроенный кодогенератор Gii. С его помощью можно быстро сгенерировать модели данных, контроллеры и даже целые CRUD блоки на основании таблицы базы данных.

Это достаточно полезно для быстрого прототипирования или для создания основы приложения. Конечно, обычно код потом меняется под нужды конкретной задачи.

Gii предоставляет графический интерфейс для создания кода. Им достаточно просто и удобно пользоваться. Также по нему есть довольно подробная документация.

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

Асинхронный PHP - конспект доклада с PHP Russia 2019

Всем привет! Сегодня я в Москве на конференции PHP Russia 2019. Представляю вашему вниманию краткий конспект докалада "Асинхронный PHP". Автор доклада - Антона Шабовта из компании Onliner.

Основной смысл асихронности - не блокировать основной поток выполнения. Соответственно, асинхронная опарация - это такая вот неблокирующая операция.

Отчет о поездке на PHP Russia 2019

Всем привет! В пятницу 18 мая в Москве в павильоне ИнфоПространство прошла конференция PHP Russia 2019.

PHP Russia 2019 - Профессиональная конференция для PHP-разработчиков. В отличии от того же DevConf конференция полностью посвящена PHP. Организатор конференции - ООО «Конференции Олега Бунина».

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

Курсы валют - бесплатно, без СМС

Всем привет! Сегодня расскажу про получение курсов валют. Сама по себе задача не сложная и ничего необычного здесь нет. Самый простой способ получить актуальный курс валюты - использовать какой-нибудь сторонний сервис для этого. Например, Fixer.io. Обращаемся к нему по Api, получаем данные ничего необычного. Обычно в подобных сервисах есть бесплатный пакет, который позволяет использовать сервис в небольшом проекте. В данном случае это 1000 запросов в месяц.

Организация Detail View в Yii2

Всем привет! Сегодня речь пойдет о Yii2, а конкретно о Detail View Widget. Этот widget позволяет выводить информацию на странице. В общем-то все, кто работал с Yii наверняка о нем знают. Чаще всего виджет используется в разных админках и т.д.

Elastic Search - тестирование релевантности

Всем привет! Сегодня поговорим об отладке и тестировании поиска на базе Elastic Search. Конкретно, о тестировании релевантности. Из коробки Elastic работает неплохо. Но, вероятно, может понадобится донастроить релевантность поиска. Например, установить вес различных полей в поиске. Также могут быть другие факторы, влияющие на релевантность. Подробнее про настройку и о том как все устроено можно почитать тут: https://codedzen.ru/elasticsearch-urok-6-4-relevantnost/

При этом важно понимать, что изменения настроек влияют на весь поиск. К примеру, нам не нравится результаты поиска по запросу "Fiat 500", но при этом устраивают результаты по запросам "Renault Logan", "Nissan Micra" и т.д. Если мы поменяем настройки и подгоним результаты под запрос "Fiat 500", то не факт, что все остальное будет работать нормально.

Symfony St. Petersburg Meetup #7 - ITMO (24 oct 2019)

Всем привет! 24 октября 2019 в Санкт-Петербурге состоялась седьмая встреча сообщества Symfoniacs - митап, изначально посвященный PHP фреймворку Symfony. Последнее время Symfoniacs позиционируется, как соощество профессиональных PHP разработчиков не ограниченное рамками одного фреймворка.