Антон Шелыганов

PHP Разработчик | JS Разработчик | Администратор Unix

Saint-Peterburg Symfony Meetup #4, 30 октября 2018

1 Nov 2018

30 октября 2017 в Санкт-Петербурге состоялась четвертая встреча сообщества Symfoniacs - митап, посвященный PHP фреймворку Symfony.

Митап проводился в офисе компании PropellerAdds на ул. Профессра Попова 37Щ. Компания PropellerAdds занимается интернет рекламой и занимает практически весь 6й этаж Бизнес Центра. Офис выглядит довольно внушительно но, в то же время уютно. Запомнились панель мониторинга из 6 мониторов, шкаф с ноутбуками, висячее кресло.


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

29 Oct 2018

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

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

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


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

17 Sep 2018

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

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


Настройка базовой авторизации Elastic Search

7 Sep 2018

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

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

Elastic в базовой версии такой функционал не поддерживает. Настройки безопасности реализованы в рамках платного дополнения x-pack.

Мы же настроим авторизацию с помощью web-сервера nginx.


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

18 Jun 2018

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

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


Отчет о поездке на DevConf 2018

19 May 2018

В пятницу 18 мая в Москве в пространстве Digital October прошла девятая конференция веб-разработчиков DevConf.

В Москву я приехал на ночном поезде. Успел погулять по городу и по новому парку Зарядье. В прошлом году такого не было. Особенно понравилась смотровая площадка.

Начало регистрации в 9:00. При этом по-сути конференция началась с кофебрейка. А первый доклад - в 11:00.


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

17 May 2018

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

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

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


Elastic Search, Русская морфология

23 Apr 2018

Это третья статья из цикла про Elastic Search. Речь пойдет о настройке русской морфологии Elastic Search. Настройка морфологии происходит путем добавлления в elastic search специальных анализаторов. Анализаторы учитывают особенности языка и за счет этого улучшаются результаты поиска.


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

23 Apr 2018

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

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


Elastic Search, Настройка синонимов

20 Feb 2018

Это вторая статья из цикла про Elastic Search. Речь пойдет о настройках синонимов Elastic Search. Синонимы нужны в том случае, если у нас есть несколько слов, которые морфологически не похожи друг на друга, но при этом имеют сходное значение. Или это может быть профессиональный жаргон. Примеры: Углошлифовальная машина - болгарка, Отвертка - шуруповерт и т.д.

Стартовая проверка

Все настройки проводились на Elastic Search 6.1.2. Запускалось в Docker.


Elastic Search, быстрый старт

31 Jan 2018

На текущем проекте используем Elastic Search. Elastic представляет собой движок для продвинутого поиска по документам. Основан на Apache Solr. По сути, является NoSQL хранилищем, и некоторые даже используют его, как отдельную БД.

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

Это первая статья из цикла. Здесь все тривиально, речь пойдет о базовых настройках Elastic Search.


MageConf 2017

19 Dec 2017

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

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

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

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


Спасибо, Yumasoft! Привет, 220В.

5 Dec 2017

Всем привет. 29 октября 2017г был мой последний день работы в компании Yumasoft. Я проработал в компании 4 года. Это был очень важный и интересный этап моей жизни.

Друзья, коллеги, сегодня мой последний день работы в Yumasoft. Всем большое спасибо, было очень здорово с вами работать :) Всем желаю счастья и профессиональных успехов! А также успехов в общем деле. У нас классная команда! И классный продукт! На кухне вас ждет пицца и суши. Угощайтесь!

Я работал в основном на PHP и Javascript. За это время я успел поработать над огромным количеством разных проектов. Сначала это были аутсорсинговые проекты. Несколько порталов на актуальном на тот момент Yii1. Интересный проект связанный с майнингом альтернативных криптовалют. Несколько серверов для мобильных приложений, написаных на стремительно устаревающих Codeigniter и Cohana.

Потом был интересный опыт разработки CRM системы GetScorecard на чистом php. Стартап, взлет и падение... Увлечение python и некоторое разочарование... Новый для меня опыт Android разработки, но скорее так, проба пера... Самым крупным и инаиболее интересным проектом для меня был 9Round. Крупный проект на Yii2. Web-портал для сети фитнесс центров и много дополнительных сервисов. В том числе Ecommerce на Magento.


Создание alias команд под Windows

18 Nov 2017

В процессе работы web-программисту часто приходится пользоваться командной строкой. Это может быть работа с git, установка библиотек через npm или commposer. Создание шаблона приложения. Очистка кэша web-приложения. Управление миграциями базы данных и т.д.

В таком случае могут возникнуть 2 проблемы. Во-первых нужно постоянно печатать повторяющиеся команды. Либо копировать откуда-то. Во вторых нужно помнить эти самые команды. Что тоже бывает сложно. Например команда создания миграции в symfony 3 выглядит так.

php bin/console doctrine:migrations:generate

В какой-то момент это все надоедает и хочется создать сокращения для команд. Под Windows можно сделать с помощью doskey.


Saint-Peterburg Symfony Meetup, 31 октября 2017

3 Nov 2017

31го октября 2017 в Санкт-Петербурге состоялассь вторая встреча сообщества Symfoniacs - митап, посвященный PHP фреймворку Symfony. Митап проводился в офисе компании Datanyze на Херсонской 39. На самом деле, митап не столько даже о Symfony, сколько о разработке в целом.

Всего было 2 доклада. Первый доклад был про про Postgress от Руслана Ханова(Копания Яндекс). Доклад назывался "Postgres - универсальный провайдер данных".


Пишем парсер данных Выписки из ЕГРЮЛ/ЕГРИП

14 Oct 2017

Всем привет! В этой статье расскажу о работе с "API Федеральной Налоговой Службы". И чем это в итоге обернулось.

В одном из проектов была задача было получать данные Юридическом Лице(ООО, ИП, и т.д.)

Проект представляет собой POS-систему для кафе и рестаранов. Для обслуживания, процессинга и учета клиентов используется корпоративный портал. Портал позволяет управлять клиентами и хранит мнжество данных от Названия организации до ОКВЭД(Общероссийский классификатор видов экономической деятельности).

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


Research на тему распознавания лиц

7 Oct 2017

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

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

Сама процедура определения типа описана тут: https://lifehacker.ru/2016/11/17/tip-lica/ .


Прикручиваем прогрессбар к Mysqldump

30 Sep 2017

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

Пусть у нас будет база данных размером примерно 500мб. Для начала попробуем просто сделать дамп. Выполним такую команду:

    
        mysqldump -uroot -p -hlocalhost large_database > large_database_dump.sql
    

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