thedeemon: (office)
[personal profile] thedeemon
А вот недавно клиент из Берлина попросил простую весчь: отслеживать изменения в нескольких папках и при появлении там определенных файлов запускать их обработку нашей программой. Я говорю: а, ну для этого можно простой скриптик написать. А потом задумался. Известно, что у клиента винда, но неизвестно какая, в частности, неизвестно есть ли там какой .NET. Ни о каких установленных руби-питонах тоже речи нет. А у "скриптика" получается энное количество опций (где и что смотреть, какой проект применять, куда сохранять, чем сжимать, сколько процессов-обработчиков может быть и пр.), заставлять для этого редактировать конфиги негуманно, нужен GUI. Простенький, три окошка там. Ради них тонны фреймворков и рантаймов слать неуклюже как-то. Спрашивается, на чем же это писать? Вы бы на чем сделали?

Date: 2014-06-06 02:55 pm (UTC)
From: [identity profile] nponeccop.livejournal.com
JS, .hta и FileSystemObject :) Будет работать хоть на 95-й, но каталоги придется поллить )

Если хочется декларативного гуя - Tcl/tk ещё можно обрезать (activetcl), там экзешник и длл-ка.
Edited Date: 2014-06-06 02:58 pm (UTC)

Date: 2014-06-06 03:04 pm (UTC)
wizzard: (Default)
From: [personal profile] wizzard
С 95 OSR2 :)
Мне чего-то лезут в голову какие-то два экстремума, в смысле, luajit + биндинги к чему-нибудь, или ВНЕЗАПНО VB6.

Ну и понятно, что можно взять голый win32, но боюсь его все забыли уже.

Кстати, а к WSH есть что-то типа ctypes, чтобы произвольные API позвать? Там не то чтобы особо сложно было сделать push...

Еще вот анонсировали .NET Native, но пока его релизнут поезд уйдет раз пять, и вряд ли порожденные им бинарники заведутся на чем-то старше Win7.

Еще у меня есть карманный .NET рантайм в 250 кб + нужный_кусок_stdlib весом (на гитхабе), но там нету winforms и вообще stdlib очень-очень кривой.

Date: 2014-06-06 04:12 pm (UTC)
From: [identity profile] nponeccop.livejournal.com
К WSH есть COM/Automation :) Я надеюсь, что топикстартеру будет достаточно дочерний процесс пустить.

Date: 2014-06-06 03:04 pm (UTC)
From: [identity profile] blueher.livejournal.com
> JS, .hta и FileSystemObject :) Будет работать хоть на 95-й, но каталоги придется поллить )

+100
Согласен целиком и полностью. Единственный минус - кросплатформенность ограничена разными версиями винды, что по нынешним временам как-то мелковато :(

Date: 2014-06-06 03:10 pm (UTC)
From: [identity profile] blueher.livejournal.com
А, ну и да - JScript и уж тем более VBScript на звание современных удобных средств разработки не тянут аж никак :(

Date: 2014-06-06 04:14 pm (UTC)
From: [identity profile] nponeccop.livejournal.com
JScript там зависит от свежести бортового ИЕ. В ИЕ8 вполне норм, для указанных нужд формирования командной строки по чекбоксам.

Date: 2014-06-06 03:10 pm (UTC)
From: [identity profile] thedeemon.livejournal.com
В данном конкретном случае винды достаточно.

Date: 2014-06-06 03:13 pm (UTC)
From: [identity profile] blueher.livejournal.com
Ну так и да, тогда JSсript поверх WSH/HTA.
Его можно хоть той же студией отлаживать если вдруг чего.
В сети есть море code snippet-ов на всякие случаи жизни - типа распаковать zip или там ещё чего.

Date: 2014-06-06 03:07 pm (UTC)
wizzard: (Default)
From: [personal profile] wizzard
О, точно, тикль!

Date: 2014-06-06 03:07 pm (UTC)
From: [identity profile] thedeemon.livejournal.com
>JS, .hta и FileSystemObject

Вот тоже про это дело вспоминал. Но предметом не владею.

Date: 2014-06-06 04:41 pm (UTC)
From: [identity profile] nponeccop.livejournal.com
Че там владеть? Джаваскриптом/хтмл владеешь, дальше
<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 :)

Date: 2014-06-06 05:13 pm (UTC)
From: [identity profile] vp.livejournal.com
То, что вы предлагаете, очень плохо.

Date: 2014-06-06 07:07 pm (UTC)
From: [identity profile] nponeccop.livejournal.com
По сравнению с чем?

Date: 2014-06-06 08:21 pm (UTC)
From: [identity profile] vp.livejournal.com
По сравнению с тем, как это сделать правильно.

Date: 2014-06-07 10:23 am (UTC)
From: [identity profile] nponeccop.livejournal.com
Это виндовое решение. Есть скриптинг хост, есть WMI, есть платформа гуя.

А вы предлагаете заменить всё это невежеством.

Date: 2014-06-07 10:00 am (UTC)
From: [identity profile] soonts.livejournal.com
>каталоги придется поллить
Не обязательно.
Через COM + WMI можно подписаться на события.

Profile

thedeemon: (Default)
Dmitry Popov

April 2026

S M T W T F S
   1 234
567891011
12131415161718
19202122232425
2627282930  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 26th, 2026 07:40 pm
Powered by Dreamwidth Studios