Tool for the job
Jun. 6th, 2014 09:36 pmА вот недавно клиент из Берлина попросил простую весчь: отслеживать изменения в нескольких папках и при появлении там определенных файлов запускать их обработку нашей программой. Я говорю: а, ну для этого можно простой скриптик написать. А потом задумался. Известно, что у клиента винда, но неизвестно какая, в частности, неизвестно есть ли там какой .NET. Ни о каких установленных руби-питонах тоже речи нет. А у "скриптика" получается энное количество опций (где и что смотреть, какой проект применять, куда сохранять, чем сжимать, сколько процессов-обработчиков может быть и пр.), заставлять для этого редактировать конфиги негуманно, нужен GUI. Простенький, три окошка там. Ради них тонны фреймворков и рантаймов слать неуклюже как-то. Спрашивается, на чем же это писать? Вы бы на чем сделали?
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
Date: 2014-06-06 04:12 pm (UTC)no subject
Date: 2014-06-06 03:04 pm (UTC)+100
Согласен целиком и полностью. Единственный минус - кросплатформенность ограничена разными версиями винды, что по нынешним временам как-то мелковато :(
no subject
Date: 2014-06-06 03:10 pm (UTC)no subject
Date: 2014-06-06 04:14 pm (UTC)no subject
Date: 2014-06-06 03:10 pm (UTC)no subject
Date: 2014-06-06 03:13 pm (UTC)Его можно хоть той же студией отлаживать если вдруг чего.
В сети есть море code snippet-ов на всякие случаи жизни - типа распаковать zip или там ещё чего.
no subject
Date: 2014-06-06 03:07 pm (UTC)no subject
Date: 2014-06-06 03:07 pm (UTC)Вот тоже про это дело вспоминал. Но предметом не владею.
no subject
Date: 2014-06-06 04:41 pm (UTC)<HTA:APPLICATION ID="oHTA"/><html> <head> <script type="text/javascript"> window.resizeTo(240, 520); var fs = new ActiveXObject("Scripting.FileSystemObject") var shell = new ActiveXObject("WScript.Shell") var f = fs.GetFolder('.') var fc = new Enumerator(f.files); var s = ""; for (; !fc.atEnd(); fc.moveNext()) { s += fc.item(); s += "<br>"; } window.onload = function() { document.getElementById('aaa').innerHTML = s shell.Run('cmd /k echo iddqd') }; </script> </head> <body id="aaa"> </body> </html>Cохраняй как .hta файл и вперёд дописывай поллинг через setInterval :)no subject
Date: 2014-06-06 05:13 pm (UTC)no subject
Date: 2014-06-06 07:07 pm (UTC)no subject
Date: 2014-06-06 08:21 pm (UTC)no subject
Date: 2014-06-07 10:23 am (UTC)А вы предлагаете заменить всё это невежеством.
no subject
Date: 2014-06-07 10:00 am (UTC)Не обязательно.
Через COM + WMI можно подписаться на события.