Этот сайт, проект на WordPress

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

  • Поддержка русского и английского языка на уровне сайта и административной панели, корректное переключение локализаций
  • Переключение между двумя разными схемами WordPress на лету
  • Создание shortcodes
  • Доработка платной схемы Wellow
  • Подробно об этих разработках я рассказываю в разделах блока “Решения” на боковой панели сайта.

    Изначально этот сайт был задуман как небольшое портфолио, которое я иногда использовал при поиске работы. Чтобы не заниматься плагиатом, я создал с нуля простую схему, на нее и сейчас можно посмотреть, она оставлена как пример для демонстрации переключения WordPress на лету на разные схемы. Затем у меня появились небольшие проекты на зарубежном фрилансе и возникла потребность в англоязычной копии портфолио. Я решил не делать второй сайт и не стал использовать для этой цели какие-то плагины, сделал по-простому, объединив русскую и английскую версию в одном месте, заключив их в шорткоды. В самом начале я переключал языки с помощью cookies, но затем подумал, что английскую версию не будут индексировать поисковые системы и начал искать решение для передачи языка через адресную строку. Были опробованы несколько вариантов, сначала я хотел сделать через редиректы веб-сервера, подключая query vars, но изучив форумы пришел к выводу, что это лучше делать средствами WordPress, в итоге я остановился на использовании endpoints.

    Телеграм чат-бот

    Цель проекта: изучить базовые возможности чат-ботов телеграм.
    Реализованные функции:

    • Создание меню команд
    • Создание inline-клавиатуры
    • Передача сообщений в бот
    • Получение сообщений, команд и callbacks
    • Создание опросников и получение графических результатов
    • Фиксация всей деятельности в базе данных
    • Удаление сообщенний из бота
    • Запуск веб-приложения телеграм
    • Коммуникация с веб-приложением

    Бот доступен по ссылке
    Использовались библиотеки: irazasyed (базовая для работы с telegram), jpgraph (для создания графика), web application сделано в виде обычной HTML-страницы, в нее добавлены библиотеки JQuery и JQuery UI.
    Бот обслуживается программой на PHP, которая работает у меня на хостинге в окне (screen) операционной системы. Запрос сообщений на сервере происходит раз в 5 секунд. Я решил сделать пока только один этот вариант, чтобы не терять сообщения при сбоях программы или связи. Работает следующая общая схема:

    Алгоритм такой: PHP-скрипт раз в 5 секунд запрашивает новые обновления (updates) на сервере Telegram через его API, реализовано три команды в меню ввода: краткая информация о боте, тестовый опросник и запуск web application. Все сообщения от сервера записываются в базу данных, также записываются ответы бота (то есть обработчика команд). Это позволяет на регулярной основе удалять из бота сообщения, которые там находятся более 5 минут.


    Сначала была сделана попытка реализовать опросник на основе poll Telegram, но оказалось, что такие опросники работают только в одном чате, то есть в группах или каналах, в простом боте опросник будет состоять из одного ответа конкретного пользователя и получить доступ к ответам других пользователей нельзя, также нельзя выдать результат опроса в виде графика, то есть доступен только один вариант: показ опросника, ответ пользователя и показ графика из одного показателя со значением 100%. Пришлось сделать полностью кастомный опросник и принимать ответы через inline-клавиатуру. В этом варианте пользователю разрешено вывзать опросник сколько угодно раз. Создание графика сделано с помощью библиотеки jpgraph. Пользователь не сможет вызвать опросник еще раз, если у него открыт предыдущий и он за 5 минут не был автоматически удален.
    Веб-приложение запускается через inline-keyboards, то есть кнопка запуска показывается в области сообщений. Это сделано специально, так как при вызове приложения через клавиатуру в области ввода туда не передается информация о пользователе и объект initData. Кроме этого на всякий случай в приложение передается chat_id и ссылка на скрипт API для обработки действий внутри приложения. Веб-приложение представляет собой обычную HTML-страницу, но вызываться она должна через HTTPS.
    Дополнительный скрипт PHP для обеспечения функционала приложения необходим из-за того, что практически не существует связи между приложением и ботом. В библиотеке telegram javascript есть метод sendData(), но он позволяет только отправить некий текст в область ввода интерфейса и закрывает приложение, кроме этого, метод срабатывает только когда приложение вызывается через кнопку в области ввода, то есть при таком раскладе в приложение не поступает сведений о пользователе. Таким образом, если нужно что-то отдать в бот из приложения, то надо вызвать скрипт с API, он запишет сообщение в базу и отправит в телеграм сообщение, которое будет показано в боте. Если не записывать данные в базу, то это сообщение не будет получено основным обработчиком, такие сообщения telegram не передает в updates. Каких-то выдающихся коммерческих возможностей у веб-приложения я не обнаружил, это обычная веб-страница. У библиотеки javascript много возможностей по использованию смартфона, все остальные возможности для меня в этом исследовании пока не открылись.

    Проект MUSICALION (Германия)

    Проект представляет собой коммерческий музыкальный сервис, члены которого могут публиковать свои произведения, а также произведения других авторов в собственном исполнении и/или оранжировке. Я работал над проектом с июля 2019 года по июнь 2021 года в качестве программиста. К моему большому сожалению за это время я выполнил все поставленные передо мной задачи и работать стало не с чем, эпидемия ковида также добавила негатива в этот бизнес, что привело к его сильному сокращению и отмене изветсных музыкальных конкурсов для которых проект являлся организатором.
    В связи с тем, что я связан с моими бывшими работодателями соглашением NDA (Confidentiality Agreement), я не могу подробно остановиться на задачах, которые выполнялись мной в рамках этого проекта и технологиях на которых это было выполнено. Вы можете посмотреть на часть сайта проекта, которая есть в открытом доступе, это довольно большой его кусок, по роду своей деятельности я так или иначе принимал участие в модификации практически всех страниц а часть модулей и функций создал с нуля, в проекте их не было.
    Вкратце можно перечислить следующие направления моей деятельности:

    Проекты выполненные мной в составе колл-центра “Фронт Лайн” (Москва)

    Я работал в качестве программиста в колл-центре “Фронт Лайн” (Москва, Зеленоград) с августа 2016 года по июль 2019 года. Работы там было очень много, но можно выделить несколько основных направлений.

  • Оперативная текущая работа, которая заключалась в коррекции существующих телекоммуникационных проектов в соответствии с требованиями заказчиков. Проекты представляли собой обычные сайты написанные на HTML и Javascript на стороне броузера и на PHP на стороне сервера, база данных mySQL. При создании нового проекта обычно за основу брался какой-то существующий похожий проект и модифицировался в соответствии с техническим заданием.
  • Текущая работа по созданию отчетов для проектов. Первоначально все отчеты были написаны на PHP и их было несколько сотен. В дальнейшем мне разрешили использовать Microsoft SSRS и я начал новые отчеты по своим проектам делать на этой технологии, всего мне удалось написать таких отчетов около 50, а также обучить своих коллег пользоваться SSRS.
  • Разработка систем интеграции с внешними проектами. На начальном этапе таких интеграций было немного, я могу припомнить только обновление базы знаний ДИТ, но в дальнейшем этот сегмент сильно вырос. Я занимался реализацией интеграций со следующими компаниями и организациями: “DPD”, “Нау такси”, “Командир такси”, “СПСР” (вошла в состав DPD), “ДИТ” и пр.
  • С моим приходом в компанию возобновились работы по созданию систем контроля качества для нескольких проектов, которые до этого момента создать не получалось. Мне удалось реализовать три таких системы: для проекта ДИТ 7Х7, проекта ДИТ ЕДЦ и проекта для обслуживания чата на сайте МПГУ. Эти проекты использовали одну базу данных, но на клиентской части сильно отличались технологиями реализации: на начальном этапе для интерфейса контроля я использовал обычный HTML и Javascript, в следующих двух проектах я работал уже с ExtJS. Кроме этого проекты кардинально отличались алгоритмами отбора звонков и диалогов, а также содержимым чек-листов для анализа разговоров, также у проектов были разные отчеты, которые я делал на SSRS.
  • При обслуживании проектов компании было очень много ручной рутинной работы, руководство поощряло мою проектную деятельность и потому я постоянно развивал наш внутренний производственный проект. В рамках этого проекта я реализовал множество задач: управление адресами получателей отчетов, универсальный редактор справочников НСИ, управление интерфейсами проектов, управление универсальыми базами знаний и т.д.
  • Проект OMS

    [+]
    Более подробно о моем участии в проекте для российских работодателей …

    OMS (Offer Management System) система для создания каталогов товаров в формате для печати (Adobe InDesign).
    Разработан в виде двух клиентских приложений для броузера и издательского продукта Adobe InDesign, и двух обслуживающих их серверных частей: базы данных mySQL (взаимодействие через PHP) и сервера Adobe InDesign (взаимодействие через SOAP и Adobe JavaScript).

    Включает в себя:

  • Графический редактор, позволяющий создавать презентации, состоящие из изображений, текстовых блоков, внутренних переменных и других презентаций.
  • Базу данных (mySQL) для хранения предложений (offers) и товаров, входящих в них, которая обновляется из базы данных CRM-системы компании (Oracle). Также в базе данных хранятся сведения о каталогах и презентациях.
  • Систему построения шаблонов каталогов и сами каталоги, которые могут быть реплицированы на сервер Adobe InDesign с помощью технологии SOAP (PHP – Adobe JavaScript).
  • Набор скриптов для клиентских программ Adobe InDesign (Adobe JavaScript), которые позволяют подключаться к базе данных товаров и производить обновление цен и описаний с помощью внутренних переменных.
  • Проект InfoHelp

    [+]
    Более подробно о моем участии в проекте для российских работодателей …

    Проект для CALL-центров, работающих с CRM компании.

    Краткое описание:

  • Основная область применения: информационная поддержка рекламных акций компании (акции, каталоги, товары)
  • Наличие административной и клиентской систем
  • Обслуживание рекламных предложений
  • Обслуживание каталогов товаров
  • Поддержка скриптов для общения с клиентами
  • Поддержка новостей
  • Поддержка форумов.

    Цель проекта: обеспечение CALL-центров, работающих с CRM-системой компании, подробными сведениями о рекламных акциях, товарных предложениях, товарах и прочей информацией, касающейся процесса продаж. Кроме этого проект имеет систему обратной связи (форумы) специалистов CALL-центров с департаментом маркетинга. Дополнительной возможностью, предоставляемой проектом, является публикация разного рода инструкций, касающихся CRM-системы и процесса общения операторов CALL-центров с клиентами (скрипты-сценарии).

  • Система управления производственным процессом лаборатории “EuroTest” (русскоязычный)

    Заказчик: ООО “Евро Тест”
    Тип проекта: Внутренний корпоративный проект
    Моя позиция в проекте:
  • Системный аналитик
  • Программист
  • Базы данных: mySQL
    Языки: PHP, HTML, JavaScript
    Технологии: jQuery, PHPExcel library
    Среды разработки: Netbeans 8, mySQL Workbench

    Назначение проекта: обеспечение процесса лабораторного анализа биофизического материала.

    Лаборатория “Евро Тест” выполняет исследования биофизического материала для нескольких крупных медицинских компаний. Проект обеспечивает регистрацию образцов, подготовку плана исследований, назначение исполнителей для исследований, хранение результатов и отсылку их заказчикам. Отсылка результатов производится через email (формат MS Excel) и вебсервисы (формат XML). Сайт проекта является закрытым, но заказчики имеют доступ к своим результатам через интернет.

    Плаврук (русскоязычный)

    Заказчик: Частный предприниматель
    Тип проекта: Коммерческий интернет-проект
    Моя позиция в проекте: Программист
    Языки: PHP, HTML, JavaScript
    Технологии: WordPress
    Интеграция с платежными системами: Яндекс-деньги
    Среда разработки: Netbeans 8

    Цель проекта: предоставление сервиса для формирования индивидуальных тренировочных заданий для людей, занимающихся плаванием.