На главную
Обо мне
Меня зовут: Николай Воронков
Я живу в: Твери, Россия
Email: job@voronkov.org
Skype: nik-voronkov
Мое резюме:в формате RTF
Работаю: Freelancer
Мое портфолио (по категориям)
MS SQL / Oracle / mySQL
ASP.NET / Silverlight
C# / PHP
Adobe InDesign (client/server)
SSRS / SSAS
Wordpress

Проект 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


    Заказчик: ООО “Промопост”, член OTTO Group Россия
    Тип проекта: CRM-система компании
    Моя позиция в проекте:
  • Архитектор баз данных
  • Архитектор программных решений
  • Руководитель отдела разработки ПО
  • Операционные системы: Windows, Linux
    Базы данных: Oracle 11G
    Языки: SQL, PL/SQL, XML, HTML, JavaScript
    Технологии: Oracle database, ERWIN, Oracle Apache Server, Oracle gateways, MS Access
    Взаимодействие с платежными системами: Qiwi, Elecsnet
    Язык интерфейса: Английский

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

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

  • Клиентская база: более 30 миллионов человек
  • Объем продаж: до 500 000 почтовых отправлений в месяц
  • Размеры рекламной деятельности: рассылка до 4 миллионов писем в месяц
  • Размер базы данных: более 300 GB
  • Количество таблиц в базе данных: около 300
  • Количество пользователей системы: около 500

    Читать дальше …


  • CRM ЕШКО (Россия)

    Заказчик: Компания ЕШКО – Россия
    Тип проекта: Доработка CRM-системы
    Моя позиция в проекте:
  • Архитектор баз данных
  • DBA
  • Программист
  • Операционные системы: Windows 2008 Server
    Базы данных: Oracle 11G
    Языки: PL/SQL, Oracle SQL, HTML, JavaScript
    Технологии: Oracle database, Oracle heterogeneous services (gateways), Oracle Apache Server, jQuery
    Язык интерфейса: Английский

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

    Проект по доработке CRM-системы компании.

  • Размер базы данных: 70Gb
  • Количество клиентов: более 6 миллионов
  • Сфера деятельности: Российская Федерация
  • Представлена на рынке: с 1996 года
  • Штаб квартира: в Голландии
  • Филиалы: 8 филиалов в Европе и странах СНГ

    Читать дальше …

  • Проект OMS

    Заказчик: Компания “НАДОМ”, член OTTO Group Россия
    Тип проекта: Внутренний корпоративный проект для департамента маркетинга
    Моя позиция в проекте:
  • Архитектор баз данных
  • Руководитель разработки ПО
  • Архитектор программных решений
  • Операционные системы: Windows, Mac OS
    Базы данных: mySQL, Oracle
    Языки: C#, PHP, SQL, Adobe JavaScript, XML
    Технологии: Silverlight, Adobe InDesign (client, server), SOAP, PHP image libraries, Microsoft Reporting Services
    Язык интерфейса: Английский

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

    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

    Заказчик: Национальное агенство промышленной информации (НАПИ)
    Тип проекта: Коммерческий интернет-проект
    Моя позиция в проекте:
  • Архитектор баз данных
  • Архитектор программных решений
  • Программист
  • Операционные системы: Windows 2012
    Базы данных: MS SQL, MS Analisys Services (OLAP cubes)
    Языки: C#, SQL, MDX, XML, HTML, JavaScript
    Технологии: ASP.NET, Devexpress ASP.NET components, jQuery
    Языки интерфейса: English, Русский
    Среда разработки: MS Visual Studio 2010, MS SQL Server Management Studio

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

    Читать дальше …


    Проект InfoHelp

    Заказчик: Компания “НАДОМ”, член OTTO Group Россия
    Тип проекта: Внутренний корпоративный проект для департамента работы с клиентами
    Моя позиция в проекте:
  • Архитектор баз данных
  • Разработчик
  • Операционные системы: Windows 2008 Server
    Базы данных: Oracle 11G
    Языки: C#, SQL, PHP
    Технологии: Silverlight, PHP image libraries, Oracle Apache Server
    Язык интерфейса: Русский

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

    Проект для 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));      
      }
    }
    


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


    Примеры для WordPress

    Picture galleries.

    This is demo for using of NEXTGEN Gallery plugin.


    Примеры для ASP.NET

    Uploading and reading Excel files (aspx) on the server.

    Using SSRS report on the ASP page without reporting server.