Проект 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.
  • При обслуживании проектов компании было очень много ручной рутинной работы, руководство поощряло мою проектную деятельность и потому я постоянно развивал наш внутренний производственный проект. В рамках этого проекта я реализовал множество задач: управление адресами получателей отчетов, универсальный редактор справочников НСИ, управление интерфейсами проектов, управление универсальыми базами знаний и т.д.
  • CRM Sigma

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

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

  • Клиентская база: более 30 миллионов человек
  • Объем продаж: до 500 000 почтовых отправлений в месяц
  • Размеры рекламной деятельности: рассылка до 4 миллионов писем в месяц
  • Размер базы данных: более 300 GB
  • Количество таблиц в базе данных: около 300
  • Количество пользователей системы: около 500
  • Проект 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), которые позволяют подключаться к базе данных товаров и производить обновление цен и описаний с помощью внутренних переменных.
  • Проект DV-6

    Заказчик проекта занимается сбором информации по различным направлениям: продажи автомобилей, грузовиков, автобусов, прицепов; анализ динамики макроэкономических показателей и т.д., данные хранятся в обычных базах данных, но для этого проекта производится их объединение в единое хранилище в формате MS Analisis Services (OLAP-кубы). Цель проекта – обеспечить доступ к данным через интернет, с помощью броузера, не потеряв при этом функциональности, которую может обеспечить MS Excel.

    Проект InfoHelp

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

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

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

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

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

  • Многоязыковая поддержка WordPress


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

    Недостатки:

    • Всегда должны быть русская и английская версия текста во всех местах.
    • В административной панели заголовки выглядят нечитабельно.
    • Нельзя использовать такую разметку для категорий и тегов, если планируется их прямой вывод через функции wp_list_[…] и им подобные.
    • При использовании текста в дополнительном коде PHP всегда необходимо вызывать функцию-транслятор.
    • Поисковики будут всегда получать текст для языка по умолчанию.

    Данный подход является очень упрощенным и годится для несложных сайтов.

    Использование в постах и страницах:

    • [ru]Русский текст[/ru]
    • [en]English text[/en]

    Использование в коде PHP:

    <?php 
    //-- echo --
    stringTranslate('[en]English text[/en][ru]Русский текст[/ru]'); 
    //-- value --
    $text = stringTranslate('[en]English text[/en][ru]Русский текст[/ru]', false); 
    ?>
    

    Реализация:

    common.js (файл javascript с вашим кодом):

    function changeLanguage(ob) {
      if (ob == "ru") {
        if (!confirm("Please, confirm changing language interface to English.")) {
          return;
        }
        document.cookie = "lang=en";
      }
      else {
        if (!confirm("Подтвердите, пожалуйста, смену языка интерфейса на Русский.")) {
          return;
        }
        document.cookie = "lang=ru";
      }
      location.reload();
    }
    


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

    index.php:

    //.... HTML markup before
    <img src="<?php bloginfo('template_url'); ?>/images/en.png" 
      <?php echo (($lang == "en")?("title='English language is setting now.'"):
      ("style='opacity: 0.2; cursor: pointer;' onclick='changeLanguage(\"ru\");' 
      title='Set English as interface language.'")); ?>/>
    <img src="<?php bloginfo('template_url'); ?>/images/ru.png" 
      <?php echo (($lang == "ru")?("title='Русский язык интерфейса сейчас установлен.'"):
      ("style='opacity: 0.2; cursor: pointer;' onclick='changeLanguage(\"en\");' 
      title='Установить русский язык интерфейса.'")); ?>/>
    // HTML markup after ...
    


    functions.php:

    add_filter( 'the_content', 'content_translate' );
    
    function content_translate ($content) {
      return stringTranslate($content, false);
    }
    
    function stringTranslate($str, $isEcho = true) {
      $rez = $str;
      if ($_COOKIE['lang']) {
        $lang = $_COOKIE['lang'];
      }
      else {
        $lang = 'en';
      }
      $rStr = 'ru';
      if ($lang == 'ru') {
        $rStr = 'en';
      }
      $am = 0;
      while (true) {
        $pos1 = strpos($rez,"[".$rStr."]");
        if ($pos1 === false) {
          break;
        }
        $pos2 = strpos($rez,"[/".$rStr."]");
        if ($pos2 === false) {
          $pos2 = strpos($rez,"[".$lang."]",$pos1);
          if (!$pos2) {
            $pos2 = strlen($rez);
          }
        }
        else {
          $pos2 += strlen("{/".$rStr."}");
        }
        $rez = str_replace(substr($rez, $pos1, $pos2 - $pos1), "", $rez);
        //-- decline endless cycle --
        $am++;
        if ($am > 100) {
          return "Cycle error!";
        }
      }
      if ($isEcho) {
        echo str_replace('[/'.$lang.']', "", str_replace('['.$lang.']', "", $rez));  
      }
      else {
        return str_replace('[/'.$lang.']', "", str_replace('['.$lang.']', "", $rez));      
      }
    }
    


    Вот собственно и все, желаю всем удачи.

    Планирование производственного процесса ООО “Промопост”

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

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

  • Поддержка расчетов загрузки для нескольких технологий сборки
  • Планирование в рамках месяца загрузки линий сборки
  • Поддержка неограниченного количества бизнес-юнитов (фирм)
  • Оперативное планирование загрузки линий на несколько дней вперед
  • Хранение актуальной информации о производственных процессах в реальном режиме времени
  • Импорт данных из CRM-системы компании
  • Формирование отчетов в MS Reporting Services (SSRS)