Tool for the job
Jun. 6th, 2014 09:36 pmА вот недавно клиент из Берлина попросил простую весчь: отслеживать изменения в нескольких папках и при появлении там определенных файлов запускать их обработку нашей программой. Я говорю: а, ну для этого можно простой скриптик написать. А потом задумался. Известно, что у клиента винда, но неизвестно какая, в частности, неизвестно есть ли там какой .NET. Ни о каких установленных руби-питонах тоже речи нет. А у "скриптика" получается энное количество опций (где и что смотреть, какой проект применять, куда сохранять, чем сжимать, сколько процессов-обработчиков может быть и пр.), заставлять для этого редактировать конфиги негуманно, нужен GUI. Простенький, три окошка там. Ради них тонны фреймворков и рантаймов слать неуклюже как-то. Спрашивается, на чем же это писать? Вы бы на чем сделали?
no subject
Date: 2014-06-06 02:41 pm (UTC)no subject
Date: 2014-06-06 02:49 pm (UTC)(no subject)
From:no subject
Date: 2014-06-06 02:44 pm (UTC)no subject
Date: 2014-06-06 02:55 pm (UTC)no subject
Date: 2014-06-06 02:44 pm (UTC)no subject
Date: 2014-06-06 03:01 pm (UTC)умеет.
(no subject)
From:no subject
Date: 2014-06-06 02:50 pm (UTC)no subject
Date: 2014-06-06 02:58 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2014-06-06 02:50 pm (UTC)no subject
Date: 2014-06-06 02:52 pm (UTC)Все сделано на С++/Qt5. GUI пока не прикрутил но в планах.
- обертка для работы watchfolder как сервиса.
- конфиг в json. при первом старте читаю его.
вычисляю хэш. раз в 10 секунд перечитываю, если хэш отличается - паршу опять.
это чтобы не лазить каждый раз перезапускать сервис. + GUI проще будет прицепить.
- Логика для определения что файл еще копируется и нельзя обрабатывать.
MacOS X сволочь не лочит файлы и приходится делать костыль типа взяли размер файла, подождали 2 секунды,
снова взяли размер файла. сравнили. Если есть разница - growing файл. не трогаем.
- Сам сервис ничерта не делает. но отсылает сообщение о готовности медиа файла в RabbitMQ.
- На очереди в RabbitMQ подписаны воркеры транскодеры. Можно подписать хоть 10.
Round-robin-ом получают сообщения и транскодируют :)
Все dll-ки с собой. Ничего больше не надо. Распаковал zip, запустил bat регистрации сервиса и все.
no subject
Date: 2014-06-06 03:17 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2014-06-06 02:55 pm (UTC)Если хочется декларативного гуя - Tcl/tk ещё можно обрезать (activetcl), там экзешник и длл-ка.
no subject
Date: 2014-06-06 03:04 pm (UTC)Мне чего-то лезут в голову какие-то два экстремума, в смысле, luajit + биндинги к чему-нибудь, или ВНЕЗАПНО VB6.
Ну и понятно, что можно взять голый win32, но боюсь его все забыли уже.
Кстати, а к WSH есть что-то типа ctypes, чтобы произвольные API позвать? Там не то чтобы особо сложно было сделать push...
Еще вот анонсировали .NET Native, но пока его релизнут поезд уйдет раз пять, и вряд ли порожденные им бинарники заведутся на чем-то старше Win7.
Еще у меня есть карманный .NET рантайм в 250 кб + нужный_кусок_stdlib весом (на гитхабе), но там нету winforms и вообще stdlib очень-очень кривой.
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2014-06-06 02:57 pm (UTC)no subject
Date: 2014-06-06 03:01 pm (UTC)no subject
Date: 2014-06-06 03:09 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2014-06-06 03:03 pm (UTC)no subject
Date: 2014-06-06 03:05 pm (UTC)no subject
Date: 2014-06-06 03:12 pm (UTC)no subject
Date: 2014-06-06 03:08 pm (UTC)no subject
Date: 2014-06-06 03:09 pm (UTC)no subject
Date: 2014-06-06 04:12 pm (UTC)А если вам байты и минимальный объем, то либо с++ либо дельфи. Нативный код.
no subject
Date: 2014-06-06 04:16 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2014-06-06 04:17 pm (UTC)А вообще у меня это на дотнете написано - где нет дотнетов те ССЗБ, потому что C# сейчас единственный внятный язык из мейнстримных под винду.
no subject
Date: 2014-06-06 06:03 pm (UTC)Гарантированно не будет зависеть от версий WSH и подобной ереси, плюс получается гладенький кругленький экзешник - и всё.
Причем мониторить через WinAPI (http://msdn.microsoft.com/ru-RU/library/windows/desktop/aa365261(v=vs.85).aspx), а не через понастроенное через анусЪ поверх разнообразными умельцами.
no subject
Date: 2014-06-06 04:17 pm (UTC)no subject
Date: 2014-06-06 04:31 pm (UTC)Бездны ужаса
Date: 2014-06-06 05:16 pm (UTC)no subject
Date: 2014-06-06 05:28 pm (UTC)http://oss.readytalk.com/avian/examples.html
no subject
Date: 2014-06-06 05:42 pm (UTC)Бу-га-га :-)
no subject
Date: 2014-06-06 05:51 pm (UTC)Кстати, расскажите про гуй на баше.
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2014-06-06 06:00 pm (UTC)key = value #комментарий
иерархию - через файловую систему.
notepad.exe - вполне GUI, а уж если notepad++...
Потом можно отдельно продать UI для редактирования конфига, но весьма вероятно хватит текста.
Нужна только внятная диагностика "ошибка в этой строчке, нет '='", пробелы в конце и начале параметра несущественные, и тп.
Что бы UI получился лучше текста - надо попотеть. Легко сделать угробищный UI хуже текста. Где нужно сделать 20 кликов, чтобы ещё раз ввести ТОТ ЖЕ ПУТЬ, хотя можно скопипастить, или который показывает message box "ТЫ ВВОД КАЛЕКА" вместо подсветки красным.
no subject
Date: 2014-06-06 06:07 pm (UTC)Надо только сразу протипировать грабли про "загрузить файл", "сохранить файл"
(no subject)
From:(no subject)
From:no subject
Date: 2014-06-06 07:47 pm (UTC)no subject
Date: 2014-06-06 08:20 pm (UTC)Не ленивые люди могут написать Windows Service.
Если лень указатели мучать - Java. Там и окошечки есть :)
no subject
Date: 2014-06-06 08:45 pm (UTC)no subject
Date: 2014-06-06 10:18 pm (UTC)net 3.5 по любому есть в любой винде.
получится 1 экзешник без инсталяторов и геморроя.
no subject
Date: 2014-06-07 10:35 am (UTC)нет :) win2012R2, надо ставить отдельно. такие дела :)
no subject
Date: 2014-06-06 11:20 pm (UTC)