Что это?

Обо мне

Добро пожаловать в записную книжку программиста. Меня зовут Виктор. Где-то в 8м классе у меня появился первый компьютер. По началу я пытался играть, да именно пытался, потому что играть скучно, долго и лениво. Через некоторое время родители купили мне еще и модем, ну знаете, пищалка-скрипелка такая. И буквально в этот же день меня зарегистрировали в сети FIDONet (привет Воркутинским фидошникам от 2:5003/53.97). С этого момента я понял, что можно не только играть и делать (копипастить) рефераты. В нашем городе были популярный интранет-сервера с модемным доступом, на которых был поднят веб-сервер (с чатом, новостями, формуом и т.п.), фтп-сервер с кучей вареза, музыки, картинок, Масяни и файлообмеником. Мне стало интересно: а как это сделано? как функционирует? Что можно еще сделать?

Как сейчас помню начало флеша, свой первый сайт на интранет-сервер  с флеш-анимацией, и первый проект - справочник по HTML, немного переработанный и дополненный какой-то интернет ресурс. Потом было PHP, потом универ, первая работа и вторая работа.

Работа номер раз

1. Внутренний портал организации с интерактивной геологической картой (MapGuid + JS + HTML + ASP.NET WebForms). В то время каких-либо JS фреймворков на слуху еще не было, поэтому работал с нативным JS. Было интересно, что это могло делать:

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

2. Интересный инструмент поиска информации в файлах на основе Google Desktop. В чем же особенность? Приложения от Google, кажется, имело некоторый API, через который можно было строить свою поисковую выдачу, но вот незадача: все документы хранятся на сервере, а API не работает по удаленке. Как решено: создана windows service, которая работает от того же пользователя, что и Google Desktop, и предоставляет доступ к себе через .Net Remoting. А уже на веб-сервере запрос обращается к той службе, и получает в ответ найденные данные, формирует ссылки и пользователи счастливы.

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

Из крупных и интересных проектов, кажется все. Но думаю, если покопаться в архивах исходником, можно найти еще парочку примечательных проектов. Кроме того, я занимался поддержкой уже существующих подсистем, поддержкой пользователей, администрированием серверов (Windows 2k - 2008 R2), AD, почтового сервера, прокси и т.п. В планах хотел создать некую оболочку, в которой можно было бы запускать все подсистемы, разработанные нашим небольшим, но могучим отделом. Все закончилось неожиданно, когда начальник сказал - есть денежная вакансия, бегом пиши резюме! И тут я попрощался со своим коллективом и перешел на работу номер 2.

Работа номер два

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

Как оказалось, два года я занимался поддержкой пользователей одной из ERP-систем, а так же ваял отчеты, выборки, приобретал работы с Excel. В перерывах между форматированием и ВПРом таблиц я учился и читал что-то новое, интересное, увлекательное... Но с каждым месяцем особисты закручивали гайки, лишали свободы деятельности, закрывали сайты, урезали права. А потом случился переход на совсем другую ERP. И это оказалось счастливым случаем, так как основной поддержкой занимались уже не мы, то высвободилось много свободного времени. Но свято место пусто не бывает, поэтому меня с коллегой отправили на реализацию различных хотелок различных людей. Стек был выбран Microsoft .NET + MS SQL/Oracle.

За это время я веду три крупных проекта:

  1. Ведение бюджета организации (C#, Entity Framwork 6, MS SQL, WPF, Oracle) - автоматизация контроля и сбора статистики по планированию и исполнению бюджета отделами организации, в том числе и корректировочные сведения. В идеале должно быть налажено с действующей ERP, с внешней системой контроля, с системой торгов и возможно каким-то госпорталом. Но самое интересное, что должно было появиться, это графический инструмент (построитель блок-схем), позволяющий менять логику формирования номера статьи, основываясь на определенных правилах, затрагивающих значения 6 параметров. К сожалению интерес к этой задаче был потерян, так как появилась более важная задача.
  2. Контроль исполнения мероприятий (C#, Entity Framwork 6, Oracle, WPF, NPOI). Первая версия этой системы разработана с помощью Excel + VBA. Если кратко, то задача системы оповещать исполнителей об истечении строка исполнения какого-то поручения, а так же формировать отчет о просроченных и истекающих сроках. Оповещение происходит по электронной почте (никогда не думал, что Excel может рассылать письма, но, оказывается, чего он только не может, все ограничено только нашей фантазией). Далее было принято решение сделать фундаментальную систему, которая поглотит в себе еще три подобных системы. Я взялся с энтузиазмом за работу, довольно часто прерываясь на другие более важные и приоритетные, но менее трудозатратные задачи. И вот система готова к ее первому показу: сделан функционал рассылки, разграничения прав, настройки, отчеты, счетчики, начата подготовка к реализации системы логирования действий пользователей. Но отдел заказчик сказал: у нас пока нет времени, давай через две недели посмотрим? Пока еще не приглашали.
  3. Пока ждал заказчика принял участие в разработке трех небольших наколенных разработке на Access. Тоже опыт, тоже интересно. Небольшие учетные системы. Одна из них еще в разработке, две в эксплуатации, и одну еще заказали. Итого 4 штуки.
  4. Но вот внезапная задача: срочно нужно собрать статистику с прокси (распарсить логи W3C). Сначала срочно в Excel, а потом автоматизированный инструмент. И он был сделан (ASP.NET MVC 5 + ASP.NET Web API, MS SQL, Log Parser 2.2, JQuery, ReactJS, NPOI. Задача интересная, не тривиальная, разделенная на модули и на исполнителей (я и коллега). Этот проект мы разделили на четыре части:
    1. База данных
    2. Веб-часть с просмотром статистики по пользователю, сайту, топ 10 качальщиков за неделю и за 30 дней.
    3. Парсер - Log Parser 2.2, набор скриптов, таблиц, триггеров и хранимых процедур для обработки данных прокси сервера, агрегирования и загрузки в БД (я принимал участие в формировании запросов и в их оптимизации).
    4. Апдейтер - утилита, обновляющая данные по пользователям из AD и затем из ERP-системы (в виду особенности ERP-системы возвращается обычная иерархия подразделений, поэтому приходится строить дерево подразделений отдельно), а также загружающая информацию по наиболее посещаемым сайтам (50 штук за раз): с помощью регулярных выражений вытаскивает кодировку, заголовок и описание (тег meta).
  5. Платежный календарь - когда бюджет спланирован (см. п1), необходимо отчитываться по денежкам и планировать их расход на месяц грядущий/текущий. Эта система была реализована в виде сайта на каком-то древнем CGI движке. Коллега хотел было переделать на PHP, но внезапный отпуск и решения руководителя определили задачу мне и в формате Excel. Чем || я и занимаюсь сейчас.

Благодаря тому, что освободилось время и постоянно появляются еще более срочные задачи, я могу улучшать свои знания в проектировании, знакомиться с новыми инструментами (Log Parser и Ninject, например), а также прокачивать свои навыки в планировании и экстремальном программировании (особенно нравится вопрос: ну сколько % еще осталось?). Все это дается очень трудно в организации, в которой не знают никаких принципов работы команд-разработчиков. А что делать? И я делаю ;)

Кроме основных проектов был разработан вспомогательный инструмент по проверке корректности формирования отчетности в ПФР, а именно индивидуальных сведений в части стажей. Сей инструмент загружает сведения из XML-файла, из текстовых файлов собирает информацию о сотруднике, периоде работы, отсутствиях и присутствиях, обучении и т.п., а дальше накладывает периоды на те, которые выделены в XML. Все расхождения в 80% ошибки ERP-системы, что мы успешно и исправляем.

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

Контактные данные под сайдбаром.

О сайте

Давно я хотел обзавестись своей страничкой в сети в стиле "Вот я, а вот моя собака". Формат данного сайт - записная книжка с заметками на тему разработки и около нее, а еще будут обязательно печеньки ;)

Сайт работает на BLUDIT - замечательная, легковесная CMS.