Софт из говна, торфа, палок и костылей
Jan. 16th, 2011 03:58 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Когда-то давно были эпические срачи на тему "монолитный софт" (условно говоря - скопировали exe-шник и все работает) vs хардкорные софтины из тысяч мелких файлов, ставящихся куда попало.
Надо заметить, что в винде нету пакетного менеджера и нет общепринятого места, где лежат grep, awk, комманд-интерпретатор умеет гораздо меньше чем баш и вообще "все плохо". Поэтому когда в голову начинает вещать червь и хочется не писать программу, а обойтись "одной строкой на баше" - это все вырождается в кошмарные конструкции на бат-файлах, gnuwin32, кульных прожках вроде nncronlite и Bitvise Tunnelier, с прописыванием всех путей ко всему в отдельных файлах параметров и прочем кошмаре.
Вот я сейчас ради развлечения таки завел на винде обновление rrd по крону, генерацию графиков и закачивание их на веб-сервер, дабы жена могла втыкать на графики атмосферного давления и температуры на веб-морде.
Адъ кромешный, надо заметить. Количество всяких мелочей, различных компов, составных частей системы и прочего настолько большое, что реально когда что-нибудь идет не так, можно двинутся башкой отлаживать. Пределом была введенная русская буква C в путям к командам в файле cron.tab от nncronlite, из-за чего оно не работало. Причем отладить это можно только ожиданием пока расписание сработает - в лучшем случае раз в минуту.
Если бы это все было одним исполняемым файлом, все было намного проще.
Надо заметить, что в винде нету пакетного менеджера и нет общепринятого места, где лежат grep, awk, комманд-интерпретатор умеет гораздо меньше чем баш и вообще "все плохо". Поэтому когда в голову начинает вещать червь и хочется не писать программу, а обойтись "одной строкой на баше" - это все вырождается в кошмарные конструкции на бат-файлах, gnuwin32, кульных прожках вроде nncronlite и Bitvise Tunnelier, с прописыванием всех путей ко всему в отдельных файлах параметров и прочем кошмаре.
Вот я сейчас ради развлечения таки завел на винде обновление rrd по крону, генерацию графиков и закачивание их на веб-сервер, дабы жена могла втыкать на графики атмосферного давления и температуры на веб-морде.
Адъ кромешный, надо заметить. Количество всяких мелочей, различных компов, составных частей системы и прочего настолько большое, что реально когда что-нибудь идет не так, можно двинутся башкой отлаживать. Пределом была введенная русская буква C в путям к командам в файле cron.tab от nncronlite, из-за чего оно не работало. Причем отладить это можно только ожиданием пока расписание сработает - в лучшем случае раз в минуту.
Если бы это все было одним исполняемым файлом, все было намного проще.
no subject
Date: 2011-01-16 04:20 pm (UTC)Или писать все на каком нибудь петоне (дада -- черви), там хоть есть разумные средства деплоймента всего в замкнутую песочницу, в том числе и на венде)
no subject
Date: 2011-01-16 05:44 pm (UTC)no subject
Date: 2011-01-16 04:23 pm (UTC)no subject
Date: 2011-01-16 04:28 pm (UTC)no subject
Date: 2011-01-16 05:44 pm (UTC)no subject
Date: 2011-01-16 05:45 pm (UTC)no subject
Date: 2011-01-16 04:39 pm (UTC)no subject
Date: 2011-01-16 05:47 pm (UTC)no subject
Date: 2011-01-16 06:12 pm (UTC)no subject
Date: 2011-01-16 06:18 pm (UTC)no subject
Date: 2011-01-17 08:14 am (UTC)У меня хоть стоит дженту, но я так рекомендовать не умею, как theiced.
no subject
Date: 2011-01-16 06:49 pm (UTC)по сравнению с этим, написание скрипта на питоне (он ведь сейчас главный скриптовый язык) для nix - чортов ад. 500 тысяч зависимостей, каждая из которых свою версию питона требует.
dll hell- это, теперь, юниксовая проблема мне кажется.
no subject
Date: 2011-01-16 07:31 pm (UTC)Для чумодана питоньих зависимостей есть virtualenv + (pip || buildout) которые прекрасно делают замкнутый террариум для нужной аппликации.
dll хелл таки не будет проблемой юниксов, потому что soname были всегда (если я правильно помню именно это и делает gac), и пакетные менеджеры тоже были всегда.
no subject
Date: 2011-01-16 08:26 pm (UTC)последняя: четвертая версия - сентябрь 2010. работает на питон 2.6
третья версия - питон 2.4 (http://plone.org/documentation/faq/plone-versions)
маленько не стыкуется с вашими версиями, правда?
вы когда в последний раз питон 2.4.4 видели? а попробуйте поставить его на какой-нить свежий арч, что ли. там такие вилы полезут - нахуй нахуй.
знаю я и про pip и про buildout. но эти шахматы с версиями ни в какие ворота не лезут, реально.
наебался досыта.
а на винде - кинул бинарник в проект, и подключил его одним кликом. ни *.cfg ни pypi, ни easy install - никакой такой хреноты не нужно. отдал человеку экзешник и привет.
no subject
Date: 2011-01-16 08:57 pm (UTC)2.4.x я регулярно вижу на окамелых центосах (матерюсь, и ставлю туда 2.6)
PS Применительно к плону я даже могу сказать откуда идут ограничения -- ZODB, и еще несколько кусков zope.* написаны на си, и довольно сильно зависят от потрохов конкретного питона.
PPS А когда кликать надоест -- негра наймете?
no subject
Date: 2011-01-17 06:25 am (UTC)На хаскел пересядет, где и в проект добавлять ничего не надо, и статический бинарь собрать можно.
no subject
Date: 2011-01-17 12:26 am (UTC)Или Гугле, который AppEngine.
no subject
Date: 2011-01-31 10:58 am (UTC)Windows Scripting Host - наш выбор
Date: 2011-01-17 08:11 am (UTC)Re: Windows Scripting Host - наш выбор
Date: 2011-01-28 04:54 pm (UTC)Re: Windows Scripting Host - наш выбор
Date: 2011-01-28 05:20 pm (UTC)Re: Windows Scripting Host - наш выбор
Date: 2011-01-31 10:55 am (UTC)Ещё там есть конкретная дока по поводу того, как создать объект WSH с подробным описанием передового метода «echo» (и кучей примеров к нему).
(Посмотрел) О! В последние 2 года в той доке ещё появилось описание пары объектов, которые могу подключить сетевой диск, сделать шоткат на рабочем столе и запусить любую программу!
Это всё, конечно, охренеть как круто — но почему-то обычные административные работы в винде у меня не ограничиваются созданием сетевых шар и шоткатов на рабочих столах. Более того, как раз это я могу и в .bat-файле сделать.
К сожалению, по всем остальным возможностям WSH в msdn лежыт не дока, а обрывочные сведения.
Re: Windows Scripting Host - наш выбор
Date: 2011-01-31 01:50 pm (UTC)http://msdn.microsoft.com/en-us/library/9bbdkx3k.aspx
+ в сети куча инфы типа вот такого вот
http://www.computerperformance.co.uk/Logon/WSH_Simple.htm
я не знаю есть ли в сети библия вида "делаем шоугодно на WScript", но мамой клянусь - любая практическая задача вида "как создать пользователя на WScript" ищется гуглом в пол-пинка.
Огромное преимущество WScript перед bat-файлами - это наличие человеческого языка программирования (я имею в виду JScript, про VBScript рекомендую забыть сразу) c возможностью человеческой отладки через Visual Studio (хотя были по-моему и решения для отладки полегковеснее, не интересовался их судьбой).
Ещё один плюс - это то что из WBScript доступны COM-обьекты которые поддерживают IDispath (а таких большинство). Т.е. практически все задачки вида "Поднять Excel, создать файл и впихнуть туда отчёт" делаются за вменяемое время.
Re: Windows Scripting Host - наш выбор
Date: 2011-02-01 11:43 am (UTC)О, как клёво! Её-то я и не приметил (видел только Reference). (Кстати, топ-раздел там замечателен. msdn такой msdn).
В отличие от Reference добавлены примеры работы с COM и WMI. (Кстати, опять о качестве msdn). Ссылка на описание WMI, впрочем, посылает в MSDN, в котором что-то сегодня bigle не ищет (хи-хи) -- но то, что я помню, было не меньшым феерическим уродством (детально описывалось как создать объект WMI и какие у него есть абстрактные методы для подключения абстрактных управляющих объектов. Как реально виндой порулить -- т.е. там отстрелить лишний процэсс или проверить текущее состояние элемента policy, который ты глазами видишь -- это оставлялось поискать для самостоятельной тренировки).
То есть, в msdn -- не дока, а говно. WScript -- это вообще ничто, я OLE, WMI, exec и echo могу и из tcl и из clisp дёрнуть, притом я мог это и безо всякого базворда «WScript».
Короткий итог: КГ/АМ.
no subject
Date: 2011-01-17 11:53 am (UTC)Вместо трех строк в командную строку приходится что-то там скачивать, распаковывать, копировать, потом править конфиги, чтобы это все друг друга увидело.. а уж рестарт сервисов это ж просто.. не, ну нафиг.