Моя трудовая биография
Эссе

"Неправильные пчелы делают неправильный мёд"

 

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

Командная работа создает синергию – результаты в команде лучше и производительность труда выше, чем если бы исполнители работали по-отдельности.

Как же отличить правильных пчёл от неправильных? Конечно, по мёду – по результатам их труда. Для этого испытательный срок. Иногда по первым шагам можно понять, какая пчела. Иногда нужно больше времени. В зависимости от предметной области.

Что нужно руководителю компании от сотрудника? В первую очередь способность решать поставленные задачи. И уже потом – его личные навыки и компетенции. Навыки и компетенции, как и опыт, приобретаются в процессе работы. А вот способности приобрести нельзя – они или есть или их нет.

В этом аспекте хочу осветить решённые мною задачи и полученный при этом опыт.

 

Электроника

Электроникой начал интересоваться с пятого класса средней школы. Собирал несложные устройства – усилители, цветомузыку, радиоприемники. Пробовал сложные, но не удавалось собрать элементную базу. Ремонтировал знакомым магнитофоны, усилители для школьного ансамбля. В качестве измерительного прибора использовал телефонный капсюль с последовательно соединенным конденсатором. С его помощью сравнительно быстро удавалось найти «испорченный» каскад. Проектировал платы, сам размещал элементы и проводил дорожки на двусторонней миллиметровке. Иногда этот процесс занимал много итераций. Плохо было в то время с инструментами, приходилось сверлить отверстия гвоздем ручной дрелью. Дорожки рисовал нитрокраской или асфальтным лаком. Травил платы в азотной кислоте, хлорного железа было не найти. Но самым интересным для меня в этом процессе была наладка, всё остальное только подготовка к ней. Читал журнал «Радио» в читальном зале, потому что издание было лимитировано и подписаться на него не удавалось. Пробовал читать книгу по физике p-n перехода, чтобы понять, как работает транзистор. Если бы в то время попалась книга «Искусство схемотехники» было бы значительно больше пользы. До сих пор читаю периодику по электронике, подписан на рассылки по элементной базе, просматриваю datasheet для заинтересовавших меня компонентов.

Вторичное оборудования для газоанализатора кислорода. 1995 год. Промышленное оборудование.
ФЭИ (г. Обнинск) изготавливало датчики кислорода на основе диоксида циркония для измерения концентрации кислорода в отработанных газах на ТЭЦ. Знание концентрации кислорода позволяет поддерживать оптимальный режим работы котла. Сам датчик представлял собой трубу диаметром 10 см и полтора метра длиной, на конце которой был запрессован собственно датчик в форме таблетки и вокруг него спираль нихромового нагревателя в керамической изоляции. Для стабильной работы датчика необходимо было поддерживать его постоянную температуру 800
±1⁰С (условия разработчика). Для измерения температуры использовалась термопара.
Для этих датчиков использовалось устаревшее вторичное оборудование. Стояла задача разработать ему на замену современное изделие.
До этого мне не приходилось иметь дело с измерениями, нужно было за короткое время найти нужные знания. Про хромель-алюмелевую термопару узнал только при постановке задачи. Уже потом узнал о необходимости компенсации температуры холодного спая и других особенностей этого прибора. Типовое решение требовало много ручного труда при наладке. Хотелось уменьшить ручной труд и если не исключить совсем, то хотя бы попытаться упростить или свести к минимуму. Поиски решения привели меня в компанию «AUTEX». Была середина августа. В компании в этот момент ни одного сотрудника не оказалось, кроме генерального директора, который любезно пригласил меня в свой кабинет и провел увлекательнейшую беседу по элементной базе. При этом снабдил меня несколькими справочниками. До сих пор с теплотой вспоминаю эту беседу. Очень грамотный, талантливый и увлеченный своей работой профессионал!
После недолгих поисков нашел нужную микросхему фирмы
Analog Devices. В ней уже была встроена температурная компенсация и выдавала она без всякой калибровки пять милливольт на один градус. Ручной труд был исключён! Дальше было дело техники – разработать схему на основе выбранных элементов. В качестве управления использовались два микропроцессора 8751 (до этого проекта с микроконтроллерами не приходилось работать). Информация отображалась на двухстрочном ЖК-дисплее. Было внедрено новшество – узел измерений был размещен непосредственно на «трубе» датчика – благодаря этому удалось повысить точность и заменить дорогостоящий кабель на более простой.
Некоторую сложность вызвала необходимость поддержания постоянно температуры датчика 800
±1⁰С. Простые алгоритмы не давали результатов из-за большого запаздывания. Положительный эффект стал наблюдаться после перехода на управление по квадрату отклонения от заданной температуры.
Этот проект полностью был разработан мной, включая схемотехнику и две программы для 8751.
Было изготовлено 10 приборов. Они прошли испытания на стенде ФЭИ и на ТЭЦ. В дальнейшем эти приборы и вся документация к ним были переданы в ФЭИ.
Это была моя первая серьезная разработка

 

Несколько слов о логистике и элементной базе. Для одного проекта было решено использовать DSP со встроенными кодеками. От заказа до его получения прошло больше года. За это время от проекта отказались, правда по другим, организационным причинам. Поскольку он не был завершен и испытан, не привожу его в этом тексте. Хотя схема была разработана, печатные платы изготовлены, программа для DSP была еще в процессе разработки.
Другой похожий случай произошел с микросхемой
AD7892 – это удобный и современный на тот момент АЦП. Производитель тоже посчитал (и обоснованно!), что это изделие будет пользоваться спросом. Построили конвейер, но за год не получили ни одного заказа. После чего конвейер разобрали. Но через некоторое время начался большой спрос и линию пришлось восстанавливать. Понятно, что быстро это не сделать, поэтому заказчикам пришлось ждать. Не просчитали, видимо, необходимое время на проектирование. Мне посчастливилось получить эту микросхему. Правда до ее использования дело не дошло, приоритеты изменились, пришлось заниматься проектом, в котором не было АЦП. Так логистика может повлиять на процессы проектирования и реализации и даже изменить наши планы и ожидания.

 

Оборудование для узлов связи. 1997-2005. Промышленное оборудование.

Телефонный коммутатор. 1997 год. Отдел, в котором мне пришлось разрабатывать коммутатор, занимался аналоговым оборудованием. Для коммутации использовалась аналоговая матрица фирмы Mitel (тогдашнее её название). Все коллеги были заняты, мне, как и в случае с газоанализатором, пришлось действовать в одиночку. Даже обмотку вольтодобавки на трансформатор пришлось доматывать самому. Все имеют представление о телефонии, но не многие понимают, как она действительно работает. Так же оказалось и со мной. Пришлось получать компетенции по ходу проектирования. Мою разработку назвали «Цифровой коммутатор» в отличии от используемого тогда аналогового. Отсутствие опыта и знаний о предметной области тем не менее позволили найти эффективные и нестандартные решения, которые упростили схемотехнику изделия и снизили себестоимость. Коммутатор использовался для работы с четырьмя видами аналоговых каналов и потоков ИКМ-30 (E1). Аналоговые линии – двухпроводная (аналог телефонного аппарата), трёхпроводная, четырехпроводная и абонентский комплект. ИКМ-30 использовался для подключения к телефонной станции, а также для связи между собой нескольких коммутаторов (для узлов с большим числом каналов). Всего к одному блоку коммутатора можно было подключить 6 потоков E1. Для синхронизации использовалась PLL, подключённая к одному из потоков. Была возможность и автономной работы (без внешней синхронизации).
Для управления каналами использовались 5 сигнальных процессоров, на их памяти была реализована матрица коммутации, регулирование уровней, задержки. Два
DSP использовались только для генерации и распознавания тонов, остальные для управления и коммутации. Для простых заказов плата ИКМ каналов могла не устанавливаться. Также количество ИКМ потоков могло меняться в зависимости от заказа – часть микросхем могла не запаиваться.
Разработкой схемы для ИКМ-30 занимался соседний отдел. Поэтому пришел к ним за консультацией и помощью, потому что нужными сведениями (кроме названия) не обладал на тот момент. Мне продемонстрировали схему, в которой было более 30 микросхем и достаточно сложная схемотехника. По опыту разработки газоанализатора решил поискать более компактное решение. Начал с изделий фирмы
Mitel. Очень скоро нашел готовое решение на одной микросхеме. Вторая микросборка с трансформаторами упрощала сборку, наладку и эксплуатацию, поэтому взял и её. В итоге две микросхемы заменили большое количество проблем с разработкой, теорией и отладкой всего, что связано с потоками E1. В дальнейшем это сильно упростило подключение к телефонным станциям разных типов.
Для подключения каналов к
DSP требовалось сравнительно большое количество логических элементов. В то время приехал к знакомым коллегам в институт связи по другому проекту и показал им схему, которая у меня на тот момент получилась. Коллеги посмотрели схему и возник у них вопрос: “Зачем используешь столько логики? Размести её в ПЛИС!”. Речь шла о ПЛИС ALTERA. Пришлось выяснять, что это такое и как использовать. В итоге переделал схему, логики в ней почти не осталось – только ПЛИС, DSP и ПЗУ с программами.
Аналоговые каналы подключались с помощью разъемов к основной плате. Для каждого канала использовался cofidec фирмы
Motorola – доступная, качественная и недорогая микросхема. На одной плате размещалось 8 аналоговых линий одного типа. В зависимости от заказа использовались нужные платы – двух-, трёх-, четырёх- проводные линии и абонентский комплект.
Распознавание частот выполнялось на
DSP по алгоритму Гёрцеля. В компании «Autex» мне предложили вместе с документацией на DSP приобрести еще две оригинальные книги на английском языке. Отказываться не стал. Одна из этих книг очень мне помогла для разработки программы распознавания частот. Распознавание частот в телефонии используется для передачи набора номера DTMF и АОН, а также управляющих сигналов при обмене с телефонной станцией методом «импульсный челнок».
Для связи с управляющим компьютером использовался порт
RS232. Компьютер отправлял команды на соединение или разъединение каналов, управляющие сигналы, которые необходимо было выдать в канал, а также получал сообщения о вызовах, конце разговора и пр.
После разработки “цифрового” коммутатора потребность в аналоговом отпала и весь отдел переключился только на это изделие. В дальнейшем все аналоговые коммутаторы заменили на цифровые из-за их неустойчивой работы. Управление аналоговым коммутатором осуществлялось через параллельный (обычно использовался для подключения принтера) порт компьютера и сигналы с этого порта непосредственно управляли матрицей коммутации и другими элементами. Если бы в аналоговом коммутаторе использовали контроллер и порт
RS232 многих проблем удалось бы избежать.
В этом проекте мною были разработаны схемы и написаны программы для каждого из пяти сигнальных процессоров.

 

Адаптеры для телеграфных линий. 1999 год.
В соседнем отделе разрабатывали адаптер для телеграфных линий. Он нужен, чтобы заменить телеграфные аппараты на компьютер – в один компьютер можно подключить много таких адаптеров. Почему-то у них не получалось сделать приемлемый вариант – то горели ключи, то он зависал, то еще по каким-то причинам не проходил тест. Обратились ко мне с просьбой разработать альтернативный вариант. В виду устройство казалось простым. Однако в ходе разработки выяснились особенности. Из-за незнания этих особенностей у коллег и не получалось сделать работоспособный продукт.
При рабочем напряжении линии
±20В на линии могли происходить перенапряжения по разным причинам. В том числе устройство должно выдерживать встречное включение в течение 15 минут. Ограничение тока 100 мА при коротком замыкании. Кратковременные импульсы до 200В. Но самым сложным для многих разработчиков было выполнить требования по дроблению сигналов. То есть, любой импульс в любом месте мог на 10% быть другой полярности. Это требование не очень понятно человеку не знакомому с телеграфными каналами. Обычно телеграфный канал четырехпроводный – два провода на приём и два на передачу. Но в каких-то случаях могли использоваться два провода. Прием осуществлялся измерение тока, а передача – сменой полярности напряжения. Из-за смены полярности при полном дуплексе и возникали такие 10% искажения сигналов. Трудность реализации была связана с тем, что как правило использовались стандартные COM-порты, у которых значение принимаемого бита осуществляется тремя измерениями в середине импульса. Если дробление попадало на середину импульса, то символ принимался неправильно. Особый случай для стоп-бита. Его длина могла быть от половины длительности бита до двух битов. Искажение стоп-бита нарушало синхронизацию и все последующие символы приходили с ошибкой.
После выяснения всех этих особенностей в «Центральном телеграфе» в отделе сертификации от
COM-порта решено было отказаться. Ключи были усилены более высоковольтным транзистором, была сделана обратная связь по току и температуре. Измерение входных сигналов интегрировалось на всей длительности импульса. Благодаря этому удалось получить устойчивость к дроблению 23%, что было близко к теоретическим 24.5%. Кроме того, интегрирование позволило корректировать частоту на приёме и обнаруживать стоп-биты нестандартной длины.
Интересное наблюдение было при проверке на «живой» линии. Новый адаптер не мог развить нужную скорость передачи на длинной линии. Оказалось, что большая индуктивность и ёмкость линии сильно затягивают фронты импульса. Решение оказалось простым – поделить паузу между импульсами пополам и присвоить эту половину паузы каждому из смежных импульсов. После такой доработки скорость передачи возросла до максимальной.
Удачной оказалась конструкция ключа – нестандартное решение для телеграфных технологий. Благодаря ему удалось избежать больших убытков. Клиент закупил партию таких адаптеров и подключил к линиям. Но из-за ошибок монтажа оказалось встречное включение – передачу соединили с передачей, приемник с приемником. Выяснили это через три дня. Ни один ключ не вышел из строя благодаря обратной связи по температуре. Не произошел выход из строя и при подключении линии в сеть ~200В. Спасли самовосстанавливающиеся предохранители.
После успешных испытаний адаптера по просьбе Центрального Банка были разработаны двухпроводные адаптеры – как для станционной части, так и для клиентской.
Эти изделия были разработаны мной как в части схемотехнической, так и в программной. В качестве управляющего процессора использовался микроконтроллер Fujitsu.

 

Устройство для организации служб обслуживания вызовов. 2001 год.
От клиентов часто были запросы на недорогое и простое устройство, с помощью которого можно было бы организовать небольшую службу для обслуживания вызовов. В итоге решено было разработать небольшую плату на четыре телефонные линии для трёх операторов (используют гарнитуры). Это удобно для организации, например, справочной службы. Как вариант можно его использовать для офисов с большим числом входящих звонков. У входящего вызова запрашивался АОН, звонившему включалась заставка с просьбой подождать. Гарнитура оператора подключалась с помощью управляющего компьютера.
Наибольшая сложность оказалась с запросом АОН. Для разных телефонных станций оказались разные временные интервалы. Благодаря одному очень настойчивому клиенту удалось найти оптимальные значения для запросов АОН. Он записывал на компьютер обмен сигналами на телефонной линии и присылал нам в цифровом виде. Благодаря ему удалось найти работающее решение, которое подошло и для других станций.
Связь с управляющим компьютером осуществлялась через
RS232.
Конструктивно изделие было выполнено в виде платы, которая вставлялась в
PCI слот компьютера. Благодаря этому минимизировалась себестоимость и упрощалась эксплуатация.
Для этого изделия я разработал электронику и написал программу для сигнального процессора – распознавание и генерация частот, коммутация на памяти
DSP, он же управляющий процессор.

 

Тональный телеграф. 2004 год.
Запрос на тональный телеграф периодически поднимался с 1997 года, с момента моей работы с узлами связи. Но мы были заняты другими проектами и браться за серьёзную разработку возможности не было и вопрос этот откладывался.
Тональный телеграф – это высокая стойка со множеством фильтров с узкой настройкой. Параметры элементов этих фильтров время от времени «уходят», нужно регулярно проверять и настраивать их для поддержания работоспособности. Из-за узкой настройки высокие требования к уровням сигналов – большой или низкий уровень приводят к неправильной работе фильтров. Плюс высокое энергопотребление. Нижняя часть полосы телефонной линии в некоторых моделях тонального телеграфа могла использоваться для обычной телефонной связи, при этом оператор не должен был слышать передачу тональных сигналов с одной стороны, а с другой гармоники голоса не должны влиять на тональную передачу.
Устройство оказалось сложным и потребовало достаточно много времени на разработку. В итоге один «цифровой» тональный телеграф уместился не небольшой плате с тремя процессорами – два
DSP и один управляющий микроконтроллер Fujitsu. Два DSP понадобились из-за необходимости генерации и распознавания одновременно большого числа частот. С помощью одной телефонной линии можно передать до 24 телеграфных каналов. Каждый телеграфный канал работает на паре частот – одна для высокого уровня сигнала, другая для низкого. Другими словами, в телефонной линии всегда «звучит» одновременно 24 тона, которые могут меняться при передаче. Аналогично для приёма необходимо распознавать одновременно 48 частот. Потребовались эксперименты с алгоритмом распознавания, прежде чем было найдено решение. Кроме того, потребовалось вычислять средний уровень сигнала за период, подбирать коэффициенты и нормировать входной сигнал для надежного распознавания тонов.
Для обеспечения телефонной связи в нижней полосе канала были использованы фильтры на переключаемых конденсаторах – они показали хорошие результаты при простоте реализации.
Для этого изделия мною была разработана схема и программы для каждого используемого в нем процессора – два
DSP и контроллер Fujitsu.
Этот проект оказался самым трудоёмким из всех, которые мне приходилось разрабатывать. В основном из-за программ для сигнальных процессоров, которые работали на пределе вычислительной мощности.

 

Электронный тир. 2011 год. Экспериментальное изделие.
Внешнее исполнение – прямоугольный лист из прозрачного полипропилена с пятью мишенями (полипропилен не трескался при попадании в него из пневматической винтовки). В качестве мишени – железный болт с круглой шляпкой необходимого диаметра и резьбой на противоположном конце (делался на заказ). Мишень подсвечивалась гибким неоновым шнуром (Neon Flex) – кольцо вокруг мишени. Сначала мишень подсвечивалась красным шнуром. При попадании красный шнур выключался и зажигался зеленый. Зажигание неоновых нитей выполнялось с помощью оптореле через мультиплексор-дешифратор. В качестве датчика попадания в мишень использовался пьезоэлектрический элемент в форме диска – он плотно закреплялся между двумя гайками. Чтобы датчик не срабатывал при попадании в стекло, между ним и мишенью устанавливались резиновые прокладки. Электронная часть состояла из мультиплексоров, компаратора, генератора для подсветки неоновых нитей (~150В) и
ZigBee модуля для связи с управляющим компьютером. Для управления мультиплексорами использовались порты встроенного в ZigBee модуль контроллера. Устройство запитывалось от двух батареек AA. Сигнал срабатывания компаратора передавался на управляющий компьютер.
Управление работой электронного тира – через смартфон. Смартфон подключался к
Wi-Fi управляющего компьютера. Приложение через ZigBee-модем передавало команды на зажигание нужной мишени на заданное время. При попадании в мишень приложение получало об этом уведомление и переходило к другой мишени. По результатам стрельбы формировался отчет о попаданиях и времени на поражение мишеней.
Моя роль в этом проекте – разработка электроники. Программным обеспечением не занимался. Дальнейшего развития это изделие не получилось, несмотря на сложные и интересные решения, использованные в нём.

 

 

Программное обеспечение

Разработка программ – первое, чем мне пришлось заниматься после окончания института. Изучил модные в то время Pascal и Prolog, Clipper, Paradox, dBase III. Была задача разместить базу данных на Paradox в резидентной программе. Для этого пришлось дизассемблировать некоторые фрагменты Paradox. Кстати, оказалось, что код его написан очень аккуратно, на нем можно было учиться программировать грамотно. Например, освобождение памяти осуществлялось строго в обратном порядке выделению, большинство машинозависимых функций было обернуто в собственную оболочку. Эти приёмы использовал впоследствии для разработки своей библиотеки, которая в итоге повысила производительность труда и читаемость кода. С помощью Clipper создавались готовые АРМ для заказчиков. На нём достаточно быстро удавалось написать сложные и громоздкие БД, при этом легкие в эксплуатации.
Чуть позже освоил «
C» и с этого момента он стал моим основным языком программирования на многие годы.

Интересно было работать с Btrieve & Visual С, коллеги разрабатывали с их помощью систему банк-клиент. Visual C отличался от распространенного тогда Borland C, способствовал формированию других, более гибких, подходов к программированию. Удивила скорость работы Btrieve по сравнению с уже известными и используемыми мной СУБД.

Один из несложных проектов - получение и анализ почты через Relcom по uucp. В то время были коммерческие рассылки и руководству нужно было сделать подборки на интересующие его темы. Из-за медленной скорости модема (2400, быстрые модемы появились позже) 1 МБ можно было получать больше часа. Поэтому получали только заголовки писем и уже потом скачивали конкретные письма, содержание заголовка которых заинтересовало. С другой стороны, отправители знали, что многие получают только заголовки и старались в заголовке письма (поле Subject) разместить максимум информации.

BBS для котировок ценных бумаг. 1995. Руководство приняло решение поднять в офисе BBS - модную тогда тему. Была сделана стойка с компьютерами и десятью модемами «U.S. Robotics Courier». Желающие получить котировки дозванивались на серийный номер и через консоль получали нужные сведения. Позже этот сервис переделали на сайт в Интернете.

БД на Access & C++ с выдачей результатов поиска в Интернет. 1996. Основная проблема – большой объем базы – 600 МБ. Поэтому поиск работал неприемлемо медленно. Поэтому был построен глоссарий и поиск вёлся по глоссарию. На построение глоссария уходила неделя достаточно мощного по тому времени компьютера. Зато сам поиск работал очень быстро. Однако оказалось, что часть записей выпадают из поиска. Выяснилось, что операторы вносили данные в разной кодировке – в английском слове могли быть русские буквы (похожие по написанию), а в русском слове – английские. Сделал поправку на формирование глоссария, заменил нужные буквы в словах с разной кодировкой. Задача была решена.

Шаблоны для qmail. 2000. Пригласили в организацию для решения задачи вынесения оформления из кода программы. Править такой встроенный в код html было практически невозможно. HTML фрагменты были в разных файлах исходного кода, который после изменений нужно было компилировать – код написан на «C». Для меня задача усложнялась тем, что раньше никогда не сталкивался с unix-подобными системами и не имел опыта работы с ними. Коллеги «по цеху» не были настроены дружелюбно, видимо воспринимали меня как конкурента – хотя задачи наши не пересекались. В таких условиях за месяц я решил эту задачу – был разработан и внедрен в код шаблонизатор, который с небольшими изменениями до сих пор использую для веб-приложений. Позже выяснилось, что на эту задачу полгода не могли найти исполнителя – никто не хотел браться за эту работу.

Чаты. 2002. Модные в то время сервисы для общения не обошли меня разработкой. Нужен был быстрый, удобный и функциональный чат, удобный для пользователя и легкий для браузера, со смайликами, приватом, личными сообщениями и пр. Для админов-модераторов были сделаны инструменты борьбы с нарушителями – «потрясти окно», выход из чата и конечно игнор. Нарушители были всегда, а вот модераторы – нет. Игнор для нарушителей был сделан так, что все нарушители могли общаться с друг другом, но при этом посетители не видели их сообщений. Это было очень эффективным средством – игра на публику продолжалась иногда больше часа, пока нарушители понимали, что их никто не читает. Отсутствие модераторов давало возможность нарушителям вести себя как им заблагорассудится. Поэтому был сделан автоматический игнор. Но только не нарушителя, а некоторых сообщений – потому что ложное срабатывание могло привести к удалению сообщений посетителя, а это все-таки прерогатива модератора – решать нарушитель или нет. Очень часто нарушителя можно было узнать по оскорблениям и мату. Эти слова были внесены в модуль, реализующий антимат. Если запретные слова обнаруживались, сообщение помечалось как запрещенное и его видел только сам нарушитель. Спокойствие в чатах было восстановлено.

Обработка логов и формирование статистики. 2005.

БД для кадрового агентства. 2005.

Баннерные программы – текстовая и графическая. 2007.

Социальная сеть. 2009.

Сервис статистики, аналогичный Alexa. 2011. Один из самых сложных проектов, которые мне приходилось разрабатывать. Сложность была связана с объемом данных и большим сроком, за который их нужно было анализировать – 30 дней.
Посетители ставили себе плагин, который пересылал все адреса, которые они посещали. По этой информации – логу посещенных страниц – нужно было построить рейтинг сайтов. За одни сутки посетители посещали примерно 15 млн сайтов, не говоря уже о количестве просмотренных страниц. Много страниц относилось к социальным сетям. На таком объеме лог за сутки мог обрабатываться больше 24 часов. Нужно было найти решение – подобрать такие структуры хранения данных и такие алгоритмы, чтобы данные обрабатывались хотя бы за одни сутки. Структуры получились сложными, мозг плавился и выворачивался наизнанку в процессе написания кода. Но в итоге в самые нагруженные дни обработка не превышала 10 часов. Рейтинги сайтов выстраивались за сутки, за неделю и за месяц. Подсчитывались уникальные посетители и число просмотров. Рейтингов было несколько – все сайты, только домены второго уровня (вместе с поддоменами), тематические рейтинги по выбранным сайтам, а также рейтинги авторов в социальных сетях и на сайте
LiveJournal.com
Интересное наблюдение – в стандартной функции
tsearch() не была реализована балансировка. Это выяснилось в процессе оптимизации. После замены стандартной реализации на версию с балансировкой дерева время обработки уменьшилось в 6 раз.

Разработка CMS и программы для построения интернет магазина. 2012.

Программы для работы на бирже. 2013. Биржи РТС, ММВБ. Fast FIX протокол. OpenMP. В конце 2012 года на бирже РТС включили протокол fast fix, благодаря этому появилась возможность получать котировки на сервере с ОС linux. Получение котировок происходило по udp протоколу в формате Fast FIX, управление по протоколу tcp в формате FIX. Некоторое время понадобилось для разработки декодера Fast FIX протокола. После подключения формировался скальперский стакан по выбранному инструменту на основе поступающих котировок. Программа оказалась сложной. Дополнительную сложность вызвал феномен с распределением памяти – через час-два работы программа завершалась по сигналу ошибки памяти. Количество котировок могло приходить больше 1000 за секунду и память все время перераспределялась. Другая особенность – нужно было принимать одновременно несколько потоков с котировками (каждый поток обрабатывался в своей секции OpenMP). При этом данные котировок были общими для всех потоков. Чтобы обойти этот момент мне пришлось разработать два вида распределения памяти – один для распаковки пакета (память выделялась один раз при получении пакета и в ней происходило выделение фрагментов памяти для распаковки значений пакета), второй для хранения котировок по всем инструментам (обычное выделение и освобождение фрагментов). После перехода на «своё» распределение памяти, завершения программы по 11 сигналу прекратились.

Получение статистики просмотров видео на «youtube.com». 2014.

Сервис ранжирования объектов по расстоянию до них. 2015.

Разработка программ для «Raspberry Pi. 2019. Популярное изделие руководство решило использовать для недорогого и компактного решения для видео-мониторинга. USB камера Logitech отдавала качественное изображение. Была опробована Pi Camera, но на ней не удалось получить хорошую картинку. С помощью usb подключался датчик контроля окружающей среды: включал в себя датчик температуры, влажности, освещенности, CO, шума. Самым полезным, на мой взгляд, был датчик CO. Ещё бы добавить датчик вредных примесей, таких как фенолформальдегидные смолы. В наших помещениях много изделий из ДСП. В закрытой комнате со временем может возрасти концентрация этих смол. Raspberry собирал всю необходимую информацию и отправлял на сервер с помощью tcp-сокета. Для обработки изображений у Raspberry не хватало мощности, поэтому основная обработка выполнялась на сервере, в том числе распознавание лиц.

Обработка телевизионных потоков. Распознавание лиц в кадре. 2019.

Новостная баннерная программа. 2019.

Программа открывания дверного замка с помощью распознавания лиц. 2020.

Разработка ПО для видео-аналитики. 2020. Работа с usb- и ip-камерами. Использование библиотек ffmpeg, OpenCV. Анализ изображений и кадров с видеокамеры с помощью нейронных сетей. Формирование бизнес-логики на основе результатов обработки изображений.

Детектор движения для тепловизора. 2021.

Декодер штрих-кодов. 2021. Использованы библиотеки Zbar и Zxing

Детектор движения для цветной камеры. 2021. Предусмотрена возможность перехода камеры в ночной режим и обратно

Диспетчер модулей. 2021. Запуск модулей, контроль их работоспособности, перезапуск, контроль используемых ресурсов

Класс для одностороней передачи кадров и данных через разделяемую память. 2022.

Детектор транспорта. 2022.

Модуль подписки на события. 2022. Маршрутизатор для событий, формируемых модулями аналитики

Модуль саботажа. 2022. Определяет смещение камеры, расфокусировку, отсутствие освещения, засвет камеры, иней, накрытие камеры какиим-либо предметом.

 

 

Административная работа

 

Научный сотрудник. 1988-1993. Разработка и реализация событийно-ситуационной модели на базе сети фреймов (по Марвину Минскому)

Исполнительный директор – «Холдинг-Коллегия». 1996. Организация сбора, обработки и представления информации на рынке ценных бумаг – акций, облигаций, векселей. Размещение данных в Интернет.
Интересное событие предшествовало моему увольнению. На новогодний банкет меня провели и усадили на место, которое как впоследствии оказалось было предназначено для начальника (к тому времени он ещё не приехал). Тогда я не заметил подвох. Но с тех пор избегаю садиться на кресло руководителя.

Исполнительный директор – «ЕСО РС – Комплексные Решения». 2005-2012. Организация взаимодействий с заказчиками, получение и обслуживание кредита, закупка серверов, организация работы сотрудников.

Научный сотрудник – ЦНИИ ОИЗ. 2017-2019. Подготовка материалов для отчетов по применению ИИ для распознавания патологий на медицинских изображениях.

IT директор – «Третье мнение». 2017-2020. Организация и получение данных для обучения нейронных сетей, организация разметки, контроль количества и качества размеченных данных, контроль оплаты труда за проведенную разметку. Организация взаимодействия с партнерами по разработке моделей на базе нейронных сетей.

 

Эпилог

За рамками этого текста остались множество небольших работ, общение с заказчиками и коллегами – все то, что составляет рабочий процесс. Были интересные и сложные проекты, которые по организационным причинам не были доведены до завершения и потому здесь не приведены. В процессе работы часто требуется найти нестандартные решения, некоторые решения потребовали большого числа исследований и экспериментов.

Связаться со мной @kasv_ru.