bash.im ithappens.me zadolba.li
10095

На технологии неведомой в году далёком

1 ноября 2012, 07:15

Решил наш шеф вытащить данные из древнего чуда программостроя, написанного для виндов 3.11 на технологии неведомой в году далёком. «Есть!» — сказал я и начал колупать это чудо.

Шаг 1. Находим программу-просмотрщик. Ура, функция экспорта есть! В CSV табы ставит где получится, текстовые фрагменты в кавычки не берёт; в плейн-тексте разделяет поля случайным количеством пробелов, причём в моноширинном шрифте таблица не складывается; в Ворд экспортирует нормально, таблица кривая, но каждое поле в своей ячейке и столбцы подписаны.

Кусков данных — 2370 в 15 папках. Чтобы полученное имело смысл, необходимо слить их тройками с учётом хитрого подобия имён (это таблицы базы данных с самодельными связями «один ко многим»), а из опций командной строки только «viewer.exe filename».

Шаг 2. Пишем программу. Сканирует папки, находит тройки, запускает просмотрщик, при помощи посылки клавиш в нужном порядке проводит операции: загрузка файла, экспорт в DOC, выгрузка (и так будет с каждым), выход. Далее уже цивилизованными средствами файлики открываются, интерпретируются и передаются в базу данных, где ещё более цивилизованно объединяются. Прогнозируемое время работы — около месяца (уж очень дряхлая у меня на работе машинка).

Шаг 3. Переносим всю эту муть на домашний комп, пробуем запустить. В конце концов отрезаем раздел и ставим 2000-ю (выше не работает просмотрщик, ниже — мой комп). Ура, приблизительно 50–60 часов!

Шаг 4. Создаём сеть из хоста и восьми виртуалок, пишем программу, делящую всё это на восемь приблизительно равных частей и раздающую виртуалкам. На них программы параллельно трудятся, посылая клавиши в просмотрщики (из-за единственного буфера клавиатуры просто распараллелить не удаётся). Данные собираются обратно на хост (11 часов), а с «цивилизованной» частью восьмиголовый бульдозер справляется меньше чем за час.

Итог:
поиск альтернативных программ для конвертации — 3 дня;
попытки запустить на домашнем компе, сначала приспособив к «семёрке», потом на разных виртуалках, потом на отдельной оси — 4 дня;
написание сервера, клиента, создание виртуалок, настройка сети — 2 недели;
отладка — 1 неделя;
работа — 1 день.

Лучше было запустить на рабочей машинке и повесить на монитор листик с надписью: «Не выключать! Идет подсчёт». Авось, блок питания и не сгорел бы.