Портфолио

Что я могу Вам дать?

  • Проект, который работает надежно и в любых условиях. Быстро, интерактивно, без лишних перезагрузок и зависаний;
  • Интеграция всех используемых систем, автоматический обмен данными;
  • Максимальная автоматизация. Исключение ручной рутины. То что может делать машина - будет делать машина;
  • Отслеживание сбоев, автоматическое информирование. Логирование. Ежедневное автоматическое резервное копирование;
  • И многое другое. Придумаем как сделать ваш проект лучше!

Обо мне

Работаю программистом с 2007 года. С 2012 года основным направлением моей работы стала серверная web разработка на php преимущественно с использованием битрикса. За это время я очень глубоко разобрался в ядре битрикса, включая редакции Бизнес и корпоративный портал Битрикс 24. Неоднократно находил баги в ядре и сообщал о них в техподдержку.

Не ограничиваюсь одним лишь битриксом, прекрасно понимаю все его проблемы и недостатки. Знаком с php фреймворками: symfony, laravel, yii. Понимаю отсталость битрикса перед этими инструментами. Давненько уже, для себя, работал с yii: сделал сервис S-work. Сменный график on-line. Сейчас бы для работы выбрал symfony.

Помимо бэкенда я работаю с фронтендом: html, html5, css, css3, js, jquery, ajax.

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

Мои принципы хорошего проекта

  • Юзабилити. Удобство использования системы должно быть на первом месте;
  • Интерактивность. На каждый клик пользователя должна быть незамедлительная реакция. Чтобы не заставлять думать "Нажал или нет?", "Висит или нет?";
  • Скорость работы проекта. Приложение должно работать быстро. Нужно находить и оптимизировать узкие места;
  • Абсолютная кроссплатформенность и кроссбраузерность. Проект должен быть сделан с использованием передовых технологий, под современные версии браузеров. Но должен адекватно отображаться и в самых старых браузерах, пусть с отключением неподдерживаемых функций. Например, откройте эту страницу в эмуляторе IE5, она работает!;
  • Простота. Чем проще - тем лучше. Главное не усложнять. Принцип KISS. Лучше идеально сделать минимальный набор всех необходимых функций, чем как попало напихать все в кучу - чтобы никто ни в чем не разобрался;
  • Удобство администрирования системы. Контент менеджеру должно быть удобно работать с наполнением сайта. Так информация на сайте будет корректной и актуальной;
  • Структура проекта исключает использование костылей в любом виде;
  • Отсутствие дублирования кода и информации;
  • Постоянный рефакторинг в процессе развития проекта;
  • Самоконтроль. Использование системы контроля версий (Mercurial).

Что я умею

Взаимодействие разных систем любой сложности

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

Работа с банковскими системами: создание оплаты, прием оплаты, автоматическое изменение статуса заказа. Речь идет о прямом взаимодействии с банковским API а не только об использовании готовых модулей для cms.

Открываются безграничные возможности, например для интернет магазина: можно автоматически отправлять товары с сайта в социальные сети (вконтакте, одноклассники, instagram и другие), автоматически создавать объявления на авито. Можно сюда добавить автоматическую работу с контекстной рекламой. Автоматически размещать и повышать объявления в Яндекс.Директ и Google AdWords в моменты распродаж или по результатам анализа остатков и спроса.

Максимальная автоматизация

Все бизнес процессы должны быть максимально автоматизированы. Человек должен только контролировать работу систем.

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

Используете Excel? Можно автоматически считывать, проверять, очищать и загружать данные из таблиц Excel. А также автоматически создавать таблицы в необходимом формате.

Верстка. Сложные пользовательские интерфейсы

Непосредственно верстка сайтов с нуля в мои прямые обязанности никогда не входила. Но я прекрасно разбираюсь в html, в принципах адаптивной верстки.

Свой сайт max22.ru я нарисовал и сверстал сам. Лендинг max22.ru/portfolio/ сделал адаптивным для удобного просмотра на мобильных устройствах, также реализовал удобное прилипающее адаптивное меню навигации. Попробуйте, поизменяйте размер окна браузера, оцените выезжающее меню и навигацию, должно быть круто! Большое внимание уделил кроссплатформенности и кроссбраузерности, лендинг адекватно работает без javascript, а также в любых браузерах, которые мне удалось достать, включая IE5 и safari для windows. Для этого я реализовал механизм отключения всех наворотов в браузерах не удовлетворяющих современным требованиям.

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

Использую jQuery, смотрю в сторону реактивных js приложений: React, Angular, Vue

Кастомизация битрикса любой сложности с поддержкой обновлений

У меня есть полный набор собственных компонентов битрикса. Включая корзину и оформление заказа, а также умный фильтр. Поэтому при решении задач я не отталкиваюсь от возможностей стандартных компонентов. Могу решить абсолютно любую задачу без костылей. Использую битрикс не как CMS а как фреймворк с админкой. Для решения самых сложных задач вполне могу обходиться начальной редакцией битрикса Старт. Но типовые задачи лучше решать на специальных редакциях, свои велосипеды не нужно изобретать.

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

Работа со скидками битрикса. У битрикса есть мощный механизм скидок: Правила работы с корзиной. Механизм достаточно удобный, но в некоторых случаях его не хватает. Приходилось дорабатывать систему скидок:

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

Корпоративный портал. Ограниченно можно дорабатывать облачную версию Битрикс24, используя REST-api. И безгранично коробочную версию, можно внедрять свои формы, свою бизнес логику. Используя ip-телефонию, можно показывать дополнительную информацию о входящем звонке, совершать автоматические операции.

Нестандартный обмен Битрикса с 1С любой сложности

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

Если возможностей штатного обмена не хватает. Можно решить задачу тремя способами:

  • Использовать штатный обмен, загружать товары в инфоблок "А". Затем скриптом (например, по крону) из инфоблока "А", по нужному алгоритму переносить товары в основной инфоблок "Б", который может иметь совершенно другую структуру. Вариант удобен тем, что на сайте есть две версии товаров: как в 1С, и переработанная версия для покупателей. Удобно наглядно сравнивать версии;
  • Навешать обработчики событий на инфоблок товаров, и при изменении/создании товаров во время импорта из 1С изменять товары нужным образом. Здесь отсутствует дублирование информации, но сложнее для понимания изменений, т.к. товары отличаются от того что есть в 1С;
  • Вообще не использовать штатный обмен. Оптимально в случае сильно кастомизированной 1С, или если на стороне 1С штатный обмен не работает. Или если штатный обмен не подходит по другим причинам. Можно реализовать свой обмен, именно так как нужно нам, это не сложно.

Мои проекты

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

Производитель бытовой техники POLARIS

Я работал над проектом в период: февраль 2017 — ноябрь 2018, вместе с рекламным агентством «Big Fish».
Проект разработан мной с нуля.

Мной с нуля созданы новые версии сайтов компании:

  • www.polar.ru — корпоративный сайт компании;
  • shop-polaris.ru — фирменный интернет магазин.

Сайты работают под управлением 1c-bitrix. Собраны полностью на собственных компонентах. По ряду причин сайты сделаны на разных копиях битрикса, и между сайтами налажен автоматический обмен данными и контентом.

Интернет магазин тесно интегрирован с системой обработки заказов и с CRM для взаимодействия с клиентами.

Интересные решения, примененные в проекте:

  • Быстрая работа навигации по товарам в каталоге с использованием ajax. Быстрый умный фильтр;
  • Интерактивная корзина. Сумма в корзине в шапке меняется в режиме реального времени при любом изменении корзины на любой странице сайта;
  • Множественные интеграции с различными внешними системами. Включая обмен данными между корпоративным сайтом и интернет магазином;
  • Собственные типы данных в админке битрикса. Для удобства работы контент менеджеров сделаны специальные формы, например подбор товаров для акции по определенным параметрам.

Официальный дистрибьютор крупнейших музыкальных брендов в России OKNO-AUDIO

Я работал над проектом в период: июль 2017 — август 2018, вместе с рекламным агентством «Big Fish».
Проект разработан мной с нуля.

Мной с нуля создан корпоративный сайт компании: www.okno-audio.ru и интернет магазин компании, который в настоящее время закрыт по организационным причинам.

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

Кастомизированный корпоративный портал Битрикс24

Я работал над проектом в период: август 2016 — май 2016, вместе с рекламным агентством «Big Fish».
Проект разработан мной с нуля.

Для внутри-корпоративного пользования дорабатывался корпоративный портал Битрикс24, коробочная версия.

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

Сделана автопостановка задач исполнителям при создании заказа менеджерами. Форма заказа используется своя, содержит множество дополнительных параметров. Для удобства работы, активно используется ajax и попапы - чтобы уместить создания заказа в одну страницу и избежать перезагрузок страниц

Office/House Anatomy

Я работал над проектом в период: июль 2015 — январь 2017, вместе с рекламным агентством «Big Fish».

Уникальные проекты Anatomy:

Решение для офиса Office Anatomy. www.officeanatomy.ru — конструктор инженерных систем офиса. Клиент мышкой накидывает на схему офиса рабочие места, сервис автоматически генерирует смету проекта и необходимые документы. В смете просчитывается клиентское оборудование, кабели, серверная комната, вплоть до шурупов и шпаклевки;

Решение для дома House Anatomy. Это интернет магазин - конструктор разнообразных розеток и выключателей. В настоящий момент проект не опубликован.

Очень интересный проект, я наверное могу назвать его моим любимым проектом, несмотря на то, что я над проектами работал не сначала. Office Anatomy и House Anatomy разные проекты, но я их рассматриваю вместе так как подход к разработке в целом схож. Это интернет-магазин + конструктор. Остановлюсь подробнее на самом интересном - конструкторе. Он состоит из 3-х важных частей:

  • js часть - видимая и интересная часть для пользователя: конструктор, шаги конструктора, перетаскивание элементов мышкой, и т.д. За это отвечал js программист, я участия не принимал;
  • Транспорт - взаимодействие браузер-сервер. Проект развивался постепенно, и от исторически сложившихся, разношерстных, запросов к серверу пришло понимание что нужно выделять полноценное, универсальное, независимое от текущих задач, быстродействующее API;
  • Серверная математика. Вот пользователь перетащил мышкой гору оборудование в свой офис, как из этого автоматически получить реальную смету? Это самое нетривиальное. Не один день был проведен за листочками с блок-схемами, распечатанными таблицами, калькулятором. Были разработаны различные коэффициенты, зависимости, группировки, замены, объединения.

В итоге все получилось. Смета считалась в несколько шагов:

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

Модуль Битрикс. Новогоднее настроение (Падающий снег + открытка)

Я работал над проектом в период: сентябрь 2017 — январь 2018, вместе с рекламным агентством «Big Fish».
Проект разработан мной с нуля.

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

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

Экспериментальный игровой проект OrangeHarmony.

Я работал над проектом в период: октябрь 2015 — июнь 2017. Проект разработан мной с нуля.

Автор идеи придумал проект orangeharmony.com, я помог его реализовать. Смысл проекта: рекламодатели покупают рекламные места (баннеры), а игроки просто пытаются угадать счастливый квадрат, фоном просматривая рекламные баннеры.

Реализована целая платформа. У рекламодателей есть личный кабинет, где они могут покупать и оплачивать рекламные места, просматривать статистику. Есть несколько различных вариантов размещения рекламы с разным алгоритмом работы и разными тарифами.

Проект реализован на Битрикс, редакции Старт. Для хранения данных используются Highload-блоки. Максимальное внимание уделено надежности проекта, все действия игроков и рекламодателей логируются, чтобы любую возможную проблему можно было отследить.

Интересные решения, примененные в проекте:

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

Агентства недвижимости Миэль.

Я работал над проектом в период: март 2015 — июнь 2015, вместе с Optimal Group.

Для сайта invest-miel.ru была разработана система импорта/экспорта объектов. Поддерживаются многие популярные xml форматы обмена данными недвижимости: yandex.ru, avito.ru, prian.ru, homesoverseas.ru и др.

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

Система импорта/экспорта объектов доступна для партнеров сайта в личном кабинете. Чтобы уменьшить нагрузку на сервер реализована очередь загрузки/выгрузки. Пользователи добавляют задание по импорту/экспорту в очередь. Обработка очереди ведется одним отдельным потоком.

Основной сложностью проекта является фильтр по всем объектам сайта (более 8 тысяч) с подсчетом количества на лету. А также интерактивная карта с отображением всех найденных объектов.

Было оптимизировано:

  • Изменен алгоритм фильтрации. Сделана матрица свойств, которая рассчитывается единожды, дальнейшие запросы обрабатываются по ней. Прирост скорости в 10 раз!
  • Внедрен мемкеш с по-объектным прекешированием. Получение свойств объекта из базы производиться единожды. А в дальнейшем данные по объекту для всего сайта берутся из оперативной памяти. Прирост скорости в 6 раз!
  • Сделан единый фильтр объектов для всего сайта. Убрано дублирование кода.
  • Оптимизирована работа с картой. Данные берутся из единой матрицы свойств. А детальная информация по объекту подгружается аяксом из мемкеша. Прирост скорости в 10 раз!
  • Замена универсальных компонентов битрикса на узкоспециализированные свои. Прирост скорости 30%.

Высоконагруженный проект Russian Code Cup

Я работал над проектом в период: январь 2014 — июнь 2014, вместе с digital-агентством Nimax.
Проект разработан мной с нуля.

Сайт для проведения чемпионата России по программированию. Russian Code Cup. Организатор соревнований Mail.ru Group.

Основной сложностью проекта является высокая нагрузка во время чемпионата, используется многосерверная архитектура. Расчетная нагрузка 500 запросов в секунду.

Произведена тесная интеграция сайта с автоматической системой проверки решений.

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

Основной сложностью являлась обеспечение надежности системы. И синхронизация работы многосерверной системы.

Завод металлической мебели «ДиКом»

Я работал над проектом в период: май 2012 — май 2014, вместе с digital-агентством Nimax.
Проект разработан мной с нуля.

Завод металлической мебели и стеллажей ДиКом www.dikom.ru.
Специфика компании не позволяет использовать функционал стандартного интернет магазина.

А именно:

  • У товара может быть несколько различных моделей;
  • К каждой модели дополнительно приобретаются индивидуальные аксессуары;
  • Аксессуар и товар это разные сущности, с различной логикой поведения;
  • Огромное количество различных конфигураций стеллажей.

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

Причем все они сделаны на едином механизме: Конструкторе конструкторов! Он позволяет без программирования добавлять новые конструкторы на другие типы стеллажей. Из всех созданных конструкторов половину сделал контент менеджер!

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

Автоброкер Яндекс Директ, Google AdWords

Я работал над проектом в период: ноябрь 2012 — май 2014, вместе с digital-агентством Nimax.
Проект разработан мной с нуля.

Система, автоматизирующая работу в Яндекс Директ и Google AdWords.

Данная система использует API Яндекса и Google. Собирает статистику и устанавливает определенную ставку для каждого объявления. В системе реализованы различные алгоритмы расчета стоимости ставки, чтобы добиться максимального результата от покупки рекламы в интернете, при минимальных затратах.

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

В системе есть расширенный фильтр по объявлениям, чтобы можно было найти объявления, которым следует уделить внимание.

S-work. Сменный график on-line

Проект разработан мной с нуля.

Разработан бесплатный сервис по ведению сменного "скользящего" графика. Здесь вы можете создавать такие графики как: Сутки через трое, Неделя через неделю, График работы по сменам, и любые другие. Все очень удобно и абсолютно бесплатно! s-work.max22.ru

В качестве платформы для разработки был выбран Yii Framework v2, это обеспечивает высокое быстродействие. Сервис, по сути, вообще не требует админки, поэтому, в данном случае, таскать за собой гиганта битрикса смысла нет.

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

Особенности сервиса:

  • Сервис не требует регистрации;
  • Возможно задать скользящий график любой сложности, ограничений нет;
  • Доступ к индивидуальным расписаниям осуществляется с помощью уникальных защищенных адресов (url);
  • Просмотренные расписания запоминаются в меню быстрого доступа;
  • Сайт адаптивный, растягивается от 320px до 1020px;
  • Расписание по месяцам строится с помощью js. Переход на другой месяц осуществляется без перезагрузки страницы и без ajax;
  • Создана наглядная система редактирования расписания с просмотром изменений на лету.

Основной сложностью проекта является front-end часть, это отображение графиков и формы редактирования на js, переключение между месяцами без запросов к серверу, отображение на графике вносимых изменений на лету.

Государственный исторический музей. Конструктор текстовых страниц.

Я работал над проектом в период: декабрь 2013 — январь 2014, вместе с digital-агентством Nimax.

Государственный исторический музей. ГИМ.
Особенность данного сайта заключается в том, что он состоит из множества текстовых страниц с разной, сложной структурой. Для того чтобы, можно было работать с контентом без глубокого знания разметки, было решено реализовать конструктор текстовых страниц. Теперь пользователь может динамически добавлять любой блок (из заранее реализованных) на любую страницу сайта.

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

Элементы конструктора текстовых страниц:

  • Изображение с подписью;
  • Текст;
  • Карта;
  • Раскрывающиеся блоки;
  • Видео;
  • Галерея;
  • Файл (с возможностью включить гугл-просмоторщик).

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

Еще одним нетривиальным моментом было то, что даты проведения выставок и событий могут задаваться следующем образом:

  • Интервал дата (или несколько интервалов дат);
  • День недели;
  • День месяца;
  • вторая пятница месяца;
  • конкретное число.

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

Корпоративный портал

Я работал над проектом в период: январь 2013 — май 2014, вместе с digital-агентством Nimax.
Проект разработан мной с нуля.

Это не Битрикс корпортал, а портал спроектированный и разработанный специально для компании Системы и Связь. Реализован на Битрикс редакции Старт.

Что реализовано:
  • Наглядная структура подразделений компании;
  • Сотрудники и документы компании разделены по подразделениям;
  • Реализован отдельный поиск по сотрудникам и по документам, а также общий поиск по сайту;
  • Корпоративный блог компании;
  • Возможность добавлять сотрудников и документы себе в избранное;
  • Список наиболее популярных страниц;
  • Личный кабинет.