Примеры работ
- Аналог юниксового крона
Несколько лет назад, мучаясь в очередной раз с настройкой задания в стандартном шедулере windows,
написал себе простейшую программу запуска команд и программ. Что бы не придумывать формат, сделал по образу
и подобию юниксового крона. Со временем это все развивалось, обрастало различными улучшениями,
дополнительными функционалами и превратилось в один из самых удобных моих инструментов по автоматизации.
Оно и отчеты делает, и файловые архивы формирует, и бакапы делает, и напоминания разного рода отправляет и много
что еще. Планирование долгое время было с точностью до 1 минуты, как это принято и в виндовс и в юниксе.
Но потребовалось мне с точностью до 1 сек планировать, доработал немного, теперь и это есть.
Документацию писал для себя, что бы команды не забыть, не судите строго за несоответствие гостам всяким.
- Реестр подготовки перечислений на счета физлиц.
Поработал в очередном банке. Банк очень плохо автоматизирован, почти не было в нем он-лайн сервисов.
По личной инциативе переписал в банке обработку реестров зачислений на карт-счета физлиц выплат всяких.
Работа объемная, но тривиальная и не очень интересная. Пока занимался с удивлением понял, что клиенты
банка не могут подготовить реестр в нужном формате для беспроблемной обработки. Все время то кодировка
не та, то формат не тот, который раньше использовали, то вообще экзотику типа pdf пришлют.
В основном конечно же xml, но с версиями 1с тоже беда. Вобчем решил заодно сделать и он-лайн ресурс
подготовки реестра. Доделал уже после увольнения из банка. Отличие от современных систем -
старался не использовать js (и это получилось, на всем сайте только одна строка js).
Так же интересно было отделить фронт на php от бэка на .net, заодно и микросервисную архитектуру
изучил. Очень классная штука оказалось.
- (Bot) Бот погодный сделал.
На работе в системе лояльности понял, что чат-боты - это здорово.
И в части коммуникации с клиентом, и в части сбора каких-то данных от него, да и для остального.
Решил научиться. Посмотрел, почитал, попробовал и остановился на telegram.
Ну а что бы что-то полезное, сделал себе погодного бота. За окном висит термодатчик,
еще в комнате, и пара датчиков на батареях отопления. Вот внешний датчик в бота и прилепил.
@krskweather_bot. Позже сделал себе еще одного бота, что бы остаток по счету в банке отправлял,
и инфо об операциях. Хотел сделать управление счетом, этакий чат-бот-банкинг, но не поддержали. Ну и ладно.
А показания датчиков сваливаются на домашний сервер.
- (Xamarin) Мобильное приложение передачи показания ПУ.
Поскольку модно, решил научиться писать мобильные приложения. В тот момент только
что уволился из СГК, логично было учиться на знакомой предметной области - передаче
показаний приборов учета. Ну и получилось, ничего сложного. Позднее, уже в компании
лояльности (торговая аналитика) написал и более интересный вариант - снятие контура
магазина по геолокации, редактирование контура, формирование извещения при пересечении
устройством контура. Это для адресной рекламы при посещении магазина. Но тут не выкладываю,
работа так и не была закончена в связи с невостребованностью.
- (c#) Загрузка полного справочника ФИАС.
Нашел в своих проектах. Может интересно кому будет. Справочник ФИАС отличает большой объем
XML-файлов. Т.е. классическими методами в приемлемое время вряд ли получится провести обработку
(не пробовал). Поэтому написал собственный, заточенный на ФИАС обработчик xml-файлов.
Так же мне лениво было изучать все данные на предмет размеров полей, поэтому
в программу заодно вписал кусок, который создает таблицы в базе с нужными размерами полей,
которые предварительно выбирает из каждого файла. Далее все файлы преобразуются к csv-формату,
закачиваются в шару на сервере и загружаются командами bulk insert, это самый быстрый способ
загрузки больших объемов данных. Процедура загрузки многопоточная, т.е. запускается загрузка
сразу всех файлов. Небольшие загружаются очень быстро и не мешают загрузке больших файлов.
- (c#) Классическое B+ дерево. В памяти.
Было скучно и сделал дерево на c#. Никуда пока не использовал. Но получилось
хорошо. Работает тоже хорошо.
- (c#) Калькулятор формульный.
Было скучно и была надежда, что пригодится, ну вот хотя бы для расчетов в ЖКХ.
Написал, потестил, лежит. Но опять никуда не использовал. Может пригодится еще.
Потом показалось уместным доделать, что б несколько выражений считал, с локальной таблицей переменных.
Ну тоже в принципе работает.
Калькулятор умеет компилить заданное выражение в обратную польскую запись (бесскобочное выражение),
его сохранять. Т.е. это аналог компиляции выражения, превращаем его в двоичную форму и при большом
кол-ве вычислений по одной формуле, пользуемся готовым для вычисления стеком. Вычисления в этом случае
выполняются значительно быстрее. Можно подключить внешнюю таблицу констант и функций.
- (c#) Генератор отчетов для торгового аналитического сервиса
Данный генератор разработан для аналитического сервиса MINDCLOUD.PRO. Работает при обнаружении задания в
папке обмена. Как только появляется задание, запускается, формирует запрошенный отчет и перекладывает в
папку результата. Вызывающая часть отдает в виде файла клиентской части браузера. Отчеты простейшие, поскольку
время формирования должно быть коротким (обычно менее 30 сек). В качестве генератора отчетов используется
StimulReport. Приложение не многопоточное, поскольку не надо было.
- (php) Система управления домашним SVN
Данный сервис был разработан для выполнения простейших функций управления домашним SVNом, что бы не выводить
наружу доступ к командной строке UNIX-сервера. Да и проще с таким сервисом управлять доступом небольшой
команды к репозиторию исходных текстов проектов. Данный сервис находится в постоянной работе.
Позже переделал все на GIT, поскольку он встроен в большинство современных средств разработки.
Соответственно теперь домашний сервер git хранит все исходники, ну и остальное, что надо.
- (sql) Примеры скриптов
Данные примеры конечно же очень небольшая часть того, что было когда-то сделано.
Отнести их к однозначно к tsql, хотя они и выполняются в базе данных mssql, нельзя - там
куски кода, вызываемые через прилинкованную базу данных oracle. В последние годы мне все время
приходится писать в двух и более базах. Естественно какой-то язык мне ближе и понятней.
Так получилось, что это TSQL. Соответственно на нем я и пишу аналитические сервисы работы с данными,
построением отчетов со сложной промежуточной подготовкой данных, с выборкой данных из различный источников.
Скрипт "копия схемы" был написан для целей разворачивания систем поддержки разработки для удаленного клиента.
Он не связан с какими либо сервисами, применяется один раз при передаче каких-либо моих разработок заказчику.
Но очень облегчает жизнь мне, как разработчику, поддерживающему свои решения не в одном месте.
- (doc) Документация на программы
Это примеры документации, которые я когда-то написал для своих программ.
"Описание" - написано для себя, что бы просто не забыть формат и не восстанавливать его потом по исходным текстам.
"Руководство" - описание написанной программы, которая так и не была внедрена в работу. А жаль, программа
получилась на удивление неплохой. Это малая часть "электронного архива первичных документов", который был
написан и частично запущен в СГК. На момент написания документа была иллюзия, что программу можно будет внедрить, поэтому
старался и написать понятно, и оформить красиво.
- (report) Примеры отчетов
Это примеры отчетов, которые готовит автоматическая система по расписанию. Потом рассылает клиентам.
Моя часть - проектирование хранилища, наполнение данными, агрегация данных, что бы отчеты готовились
за разумное время (на "сырых" данных это занимает часы), реализация требуемых шаблонов печатных форм
в генераторе StimulReport, настройка системы отправки (описание в предыдущем пункте), финальная
проверка всей цепочки. Причем отчеты готовятся отдельными шаблонами, перед отправкой собираются в единый пакет,
экспортируются в указанный формат (pdf) и в таком виде отправляются клиенту.