Классный все таки мы сделали каркас в проекте Presentator
Несколько лет назад мы делали «презентатор». Не уверен, что сейчас запущен сервис этого решения, но я хочу сказать о другом.
Мы там в последний раз «боролись с виндой». (я потом поставил линукс и совсем забыл о винде как о страшном сне). Было наработано несколько приятных заготовок.
Win часть писали на LUA, и на C# в последствии перешли. Решение на Lua было нативным и от этого по своему прекрасным.
Я хочу тут написать такую мысль: «если вы делаете не продукт для масс а решение для конкретных компьютеров под виндой, то LUA native вполне может быстро привести к результату», и скажу потом пару слов почему мы перешли на C#…
Под катом «что же такого интересного мы сделали тогда».
Такая там была структура Lua части.
- Сама сборка Lua — наша , очень навороченная с кучей Win библиотек
- исходники проекта, работа с окнами, стилями, по сути — ходячий пример, как и что надо делать.
- libsrc — сборки доп библиотек на C которых не хватало в публичной поставке, все собрано, бери и используй,
- ну и тесты, это просто к проекту.
Lua редко использую как самостоятельный язык, а чаше для встройки. Это от того, что сам интерпретатор без библиотек слишком гол.
У нас своя сборка, которая включает все что надо, чтобы смело считать Lua полноценным standalone языком программирования.
в Lua добавлены библиотеки, часть из них:
Мы делали захват экрана, подключили его к Lua. Модуль захвата я писал на C — можете просто вызвать и получить результат.
Можно работать с
- Kinekt MS — камера с глубиной для анализа положений тела
- управлять VLC
- управлять Power Point
- PDF, через Sumatra.
- Сетевая библиотека Poco подключена, знаете, что это ? там есть все что хочешь про сеть, и она у нас в проекте.
- «веб сокеты» … да, что там только нет, в LUA все что было, я все в эту сборку включил (но в дистрибутив презентатора шло не все это)
Я вспомнил об этих вещах потому, что мне это потребовалось в новом проекте.
Представьте: закрытая корпорация, неизвестное ПО, которым надо управлять через WinAPI. Нужно «скриншотить» окна и обрабатывать изображения техническим зрением.
Поставить туда Visual Studio никто не даст и не даст на ней работать рядом с целевым ПО — скрипты идеальный вариант.
Для Rapid разработки «по месту» в условиях винды LUA с такими наработками очень хорош. Скопировал папочку «на рабочий стол» сделал ярлычок и все пошло, если что — поменял.
Мы собирали все в один EXE файл , так что можно и так это собрать:
Очень радует то, что создавая что-то технологичное, потом всегда это можно переиспользовать, сэкономить время.
Столько тогда всего было сделано полезного, кстати для Kinect был даже спец каркас написан, который позволяет распознавать положения тела.
Как-то так описывались жесты:
Эта программа (распознающая жесты) просто шлет SendMessage HWND т.е. интерфейс взаимодействия с ней наипростейший, можно в свою программу добавить жесты, довольно легко.
А для ОС Win Surface (win RT) и WinPhone OS (которые жестко отличаются набором контроллов) были разработаны свои наборы контролов… ох зря — MS предал наши усилия.
Если у вас есть к этим наработкам интерес, то с нами можно легко связаться. Это даже вопрос не столько цены, сколько вопрос самого интереса 🙂
PS
Ах, да обещал рассказать почему мы перешли от Lua к C# в том проекте. LUA хорош тем, что он бинарный, а вида этим плоха, точнее ее разные версии в ABI формате сильно отличаются. Presentator это B2C продукт, который у всех должен был стабильно одинаково работать, а винда нам мешала в этом всеми способами.
Приходилось в код добавлять много If else про версии винды, это отвлекало, убивало энтузиазм, тратило наши силы и деньги. C# самостоятельно решает совместимость версий винды… хоть это + 2 гига к проекту в виде .NET и их компиляций, в нашем случае решила совместимость.
ОДНАКО, если вам не требуется чтобы работало на всех в мире машинах, а вы выполняете заказ, который разворачивается на единицах — десятках машин, то лично я за гибкость LUA, все таки.