Pull to refresh
192
0
Альберт Степанцев @AlexLeonov

Программист. CTO. Архитектор. Преподаватель.

Send message
Вы в море ни разу не заходили на галечном пляже?
Статья не о том.

Нет никаких «заказчиков», никто не собирается ничего править в таблицах.
Есть заранее данные файлы Excel, содержащие расчеты. Запустили — подставили данные — считали результат. Таких файлов сотни. Подставлять в них данные нужно сотни и тысячи раз в день.

Никакая «вёрстка» на PHP не справится с задачей «Запустить файл с макросами».

Пожалуйста, перечитайте статью внимательнее.
Нормальная «сборка». Для целей обучения. Разумеется, в продакшн выставлять такое нет смысла.
А Ваши выкрики в духе «ололо! Closure — не Clousre!

О, выкрики нашли и „ололо“. Не процитируете ли?
С каких это пор вежливое указание на терминологическую неточность стало вдруг „выкриками“?

Если автор сочтет замечание существенным — исправит. Нет — ну и на здоровье. Вы-то что так волнуетесь?
Вполне себе нормально «гоняется параллельно». Более того, внутри одного Application спокойно открываются несколько независимых Workbooks. Правда, нам это не требовалось.
Перечитайте еще раз постановку задачи. Нужно не читать файлы или писать в них, нужно запускать MS Excel.
Наверное пятый раз за сегодня это объясняю ))
Да.
Closure — это замыкание контекста на Lambda. А никак не сама Lambda.
Создано веб-приложение, которое имеет API.
По запросу это приложение открывает нужный файл (а точнее, его копию), подставляет в этот файл данные, запускает пересчет, считывает данные после пересчета, инициирует импорт книги в PDF.
В ответе клиенту в формате JSON передается массив считанных результатов просчета и ссылка на файл PDF.

Скажите, как «еще один макрос» решил бы эту задачу?

Добавлю для понимания — «клиенты» не являются людьми. Эти данные требуются другим сервисами.
Если бы вы прочитали статью, то поняли бы «нафига это всё».

Мне не нужно читать или писать из/в файлы формата Excel. Мне было нужно их запустить — в родном Microsoft Office.
может быть представлено объектом класса правила или замыканием

Это называется по-русски «анонимная функция» или «лямбда-функция». Использование термина «Closure» в PHP — ошибка разработчиков, в которой они не раз уже каялись.
Вы не являетесь для меня лицом, осуществляющим распорядительную функцию либо правосудие. Поэтому не имеете права судить о том, нарушил ли я лично какую-либо лицензию. Это раз.

Второе. Да, в моей юрисдикции существует понятие добросовестного использования. В личных (а я лично изучал применимость утилиты для моих собственных целей), научных и учебных целях. Что и было проделано.

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

Считаете, что я неправ — можете подать в суд. Полные личные реквизиты могу предоставить по запросу.
Если бы это были процессы, зачем бы мне нужен был Windows и COM?
Это невозможно.

1. «Крупных заказчиков» десятки
2. Файлов сотни, их список меняется несколько раз в день
3. Алгоритмы в файлах также могут меняться ежедневно

Анализ такого объема алгоритмов, а, главное, их верификация и QA обошелся бы на три порядка дороже, чем один маленький виртуальный сервер с «виндой».
В коде выше я привел специально один маленький и незаметный комментарий:

// @todo: выключить, если не требуется видеть работу приложения
$this->xls->Application->Visible = 1;


Вот эта строчка, если в ней присвоить свойству Visible = 0, как раз и предотвращает появление приложения на рабочем столе.

Производительность, честно говоря, никакая. Запрос с расчетом простейшей формулы типа «2+2» занимает чуть ли не секунду. Но мне это некритично, к счастью.
Мне не стыдно.

Я для ознакомления и исследовательских целей волен ставить любой софт, какой захочу. Это вполне себе fair use. Убедившись в эффективности, можно и купить.

Откуда вы знаете, что «спиратили»? По себе людей судите?
Да, но зачем?
Почитал документацию — опять тоже самое. Фиксированные версии Apache (он вообще нам не нужен), PHP. Всё равно нужно обновлять, а под Windows это равнозначно «ставить заново».

Для обучения — может быть. Для продакшн-сервера — конечно нет.
Именно так.
Не было бы печали, если бы наши партнеры предоставляли алгоритмы расчета. Но вместо этого они зачастую дают просто «толстый» Excel-файл и говорят «ну… у нас же всё считается!» :)
Задача не решена. Пользователю не нужен Excel-файл, ему нужны данные из него. Результат обсчета подставленных данных, например в JSON и красивый PDF.
Более того, пользователь — не человек :)
Это веб-сервис для других сервисов. Часть микросервисной архитектуры.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity