Предлагаю баттл. Каждый нечетный раунд — мой, каждый четный — твой. "Хозяин" раунда озвучивает задачу, решенную им с помощью одного из сабжевых средств и представляет, собственно — решение. Второй — решает эту же задачу с помощью своего средства. Остальные — оценивают каждое из сообщений (1,2,3). Играем 10 раундов, каждый ведет по 5. По результатам — сложим оценки и определим победителя. Готов?
kochetkov.vladimir однажды (26 июня 2008 [Четверг] 14:25) писал в rsdn.flame.comp:
> Честно говоря, не представляю себе — нахрена это может понадобиться, но — почему нет?
Ну у меня это вполне себе работает...
Вобщем скрипт пинает по bluetooth 2 мобилы, и ежели ни одна не отвечает, то отключает монитор, лочит станцию, гасит звук, плеер на паузу ставит, в мессенжерах статусы выставляет, пару сервисов стартует....
При обнаружении телефона соответственно все наоборот: анлок станции, включает монитор и так далее.
Подробнее, ежели кому интересно, — тут
Вот что я понял. Что такое оболочка, она же shell, представителями которой являются bash, PowerShell и многие другие? Это язык программирования, отличающийся тем, что он в первую очередь приспособлен для запуска внешних программ (синтаксически, большинство оболочек запускает программы простым указанием их имени) и его интерпретатор, который позволяет исполнять программы на этом языке как интерактивно, так и неинтерактивно.
PowerShell — это C# со специфическим синтаксисом (впрочем, то же самое можно сказать про любые другие два языка из .NET) и интерпретатором. Что она может? То же, что и C#. Что она может удобнее и проще, чем C#? Работать интерактивно и взаимодействовать с другими программами.
Проблема только в том, что ни то, ни то не приносит существенных преимуществ. В интерактивной работе PowerShell заметно проигрывает той же zsh, преимущественно из-за автодополнялки и сложных shell patterns (они же шаблоны или wildcards). Первое к PowerShell приделать можно, а второе — очень затруднительно из-за того, что традиционно со времен DOS программы сами обрабатывают свои аргументы и раскрывают шаблоны. Взаимодействие же с другими программами затруднено тем, что взаимодействовать-то не с чем. В Unix традиционно большинство возможностей доступны в виде программ командной строки, которые хорошо взаимодействуют между собой, но не так обстоят дела в MS Windows. Много ли толку от сокращенной записи
program1 | program2
по сравнению с
int p[2];
pipe(p);
if(fork() == 0)
{
dup2(p[1], STDOUT_FILENO);
execlp("program1", "program1", NULL);
}
if(fork() == 0)
{
dup2(p[0], STDIN_FILENO);
execlp("program2", "program2", NULL);
}
// кстати, раз мы в КСВ, хотелось бы увидеть аналогичный код на WinAPI
если мало программ имеют вывод, годный для переадресации в другие программы?
В MS Windows это делается не шелловым скриптом, а целой программой, которая в лучшем случае выглядит как library2.process_data(library1.get_data()). Какой интерфейс предоставляет большинство продуктов для данной ОС, такой и нужно развивать.
Если я кого-то не убедил, предлагаю посчитать, сколько раз Владимир вызывал из своих скриптов внешние программы, что так легко делать в шеллах, стоит лишь упомянуть их имя. Положительного числа не получится.
В Unix на шелле никто не пишет большие программы. Шелловые скрипты просто служат для «склейки» воедино разных кусочков системы. Например, есть папка /etc/acpi/suspend.d, в которой находятся исполняемые файлы, которые система исполняет при переходе в ждущий режим. Если я хочу выгрузить какой-нибудь модуль, или отправить куда-то сообщение, или еще что-нибудь, я положу туда свой файл. Что, как не шелл, лучше всего подойдет для этого? Я могу написать бинарник хоть на C, системе всё равно, но проще всего положить туда «for i in $INTERFACES; do ifconfig $i down; done», чем пытаться сделать то же на «серьезном» языке программирования. Т. е., этот скрипт будет просто мостиком между /etc/acpi/hibernate.sh и /sbin/ifconfig, не делая сам по себе никакой особенной работы.
Типичная юниксовая система (основанная на SysV init, т. е., почти любая, даже Ubuntu с ее upstart) исполняет при загрузке несколько сотен шелловых скриптов для запуска нужных программ. PowerShell бы для этого не подошла. (Скрипт «#!/bin/sh \n ls 404» выполняется 4 мс; а аналогичное на PowerShell?) Она больше годится для скриптов покрупней, но только зачем нужны крупные скрипты на шелле?..
Вывод: PowerShell — это видоизменение C# путем смены синтаксиса, добавления интерпретатора и интерактивного режима, цель чего избегает моего понимания.
Здравствуйте, Roman Odaisky, Вы писали:
RO>Задача: отслеживать изменения в файловой системе. К примеру, всякий раз, как в некоей директории появляется файл, оповещать об этом пользователя.
RO>bash: RO>
RO>while file="$(inotifywait -q -e create --format='%w/%f' /var/crash)"
RO>do
RO> kdialog --msgbox "Something crashed and file $file was created."
RO>done
RO>
ок:
$fsw = New-Object System.IO.FileSystemWatcher("C:\\Temp")
while ($file = $fsw.WaitForChanged("Created").Name)
{
echo "Something temporary occured and file $file created."
}
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Шеридан, третий раунд играть будем, или и так — уже каждый свои выводы сделал и все понял? Если будем — закину условия задачи.
Лучше распей с Шериданом обещанный баттл, он тебе напишет драйвера для твоего модема, ты поставишь себе линукс, будешь здесь хвалить *sh и ругать PowerShell в частности и Майкрософт вообще, все будут счастливы, твоя компания станет сверхзащищена от всех вирусов и хакеров, на RSDN поменяются default city и default OS. Чего же ты хотел, виндекапец всё-таки.
Здравствуйте, Sheridan, Вы писали:
S>kochetkov.vladimir однажды (27 июня 2008 [Пятница] 13:39) писал в rsdn.flame.comp:
>> Нанять? Kernel-программера под linux? Разве что только если потом этот драйвер продавать, ибо иначе никак не окупится. S>вот и я об чем и говорил ранее. В голове мысли только о бабле.
Шеридан, ты это... На досуге поинтересуйся — во сколько обойдется заказная разработка драйвера под закрытое устройство, прежде чем советовать такое, а потом рассуждать об алчности собеседника, ага?
Здравствуйте, Mamut, Вы писали:
M>Мне может быть анально неинтересно копаться в нелрах системы.
Во-во... И не говори. Как не пытаюсь линукс поставить, все время какая-то анальность во всем чувствуется. Причем совершенно непонятно — кто кого? Я думал, это только у меня, но теперь от души прям отлегло
Здравствуйте, Roman Odaisky, Вы писали:
RO>Никого не смущает, что CreateProcess имеет в общей сложности 35 параметров, в то время как fork — 0, а exec — 3 (имя, аргументы, окружение)?
Вижу только четыре (4!) обязательных параметра. Из которых только три входных, ну да неважно. Ещё 6 опциональных. Но, даже если их сложить вместе, как-то далеко до 35 получается
Здравствуйте, IID, Вы писали:
RO>>Никого не смущает, что CreateProcess имеет в общей сложности 35 параметров, в то время как fork — 0, а exec — 3 (имя, аргументы, окружение)?
IID>наглый, провокаторский пи#$%деж:
С таким в мусор.
IID>Вижу только четыре (4!) обязательных параметра. Из которых только три входных, ну да неважно. Ещё 6 опциональных. Но, даже если их сложить вместе, как-то далеко до 35 получается
Структуры посмотри, что там есть и что вообще можно с ним сделать. Хотя думаю ты это и так знаешь, и просто наглая провокация.
Здравствуйте, Sheridan, Вы писали:
S>kochetkov.vladimir однажды (25 июня 2008 19:34) писал в rsdn.flame.comp:
S>Монитор выключить сможеш? S>
S>xset -display :0 dpms force off
S>
Честно говоря, не представляю себе — нахрена это может понадобиться, но — почему нет?
Через WMI (как посоветовал Роман), к сожалению — именно монитор отключить не получится, бо MS до сих пор не реализовала провайдера для метода SetPowerState класса Win32_DesktopMonitor. Но это косяк WMI, а PS. Если реализует, либо если взять провайдера третьих контор, либо если написать своего, то на PS через WMI это выглядело бы так:
Но увы и ах — провайдера в общем случае нет. Поэтому пойдем вторым путем, предложенным Романом и воспользуемся WinAPI. Чуть расширим задачу: вызвать произвольную функцию из произвольной DLL, не против?
Потратим немного времени на написание универсального "запускателя" нативных функций из dll'ек:
Его можно оформить в виде отдельного сценария (либо в виде командлета в PS v2.0) для дальнейшего использования из любых скриптов. Затем: напишем обертку для SendMessage:
Писать пришлось много, таки-да. Зато у нас теперь в распоряжении — полноценный доступ не только к API всей системы, но и всех доступных для использования dll-библиотек из обычных скриптов, не дотягивающих до уровня bash
Здравствуйте, Sheridan, Вы писали:
S>Монитор выключить сможеш? S>
S>xset -display :0 dpms force off
S>
Думаю, сможет. Всё, что для требуется для этого в WinAPI, — SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 2). Начудит что-нибудь через WMI.
Но это же совсем ничего не говорит о предмете обсуждения.
Здравствуйте, Roman Odaisky, Вы писали:
RO>Здравствуйте, Кодт, Вы писали:
К>>Я поэтому и запротестовал: xset является элементом ОС, а не шелла.
RO>xset является элементом unix way. /bin/bash беспомощен без ls, cp, mv, cat, echo, sort, uniq, find и т. д., и что?
Протестую! echo is builtin! В остальном,
function ls()
{
echo $1/*
}
function cat() {
while read; do
echo $REPLY
done < $1 > $2
}
и т.д. Я сейчас слишком пьян, чтобы написать на баше sort, но uniq, согласитесь, пишется тривиально.
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Ок, но это ничего не даст. Текст, который выводится в результате работы скриптов PS — является лишь одним из способов визуального представления возвращаемых командами объектов.
Только фича в том, что для типичных shell-скриптов ничего кроме текста особо и не нужно. А если нужно — то стоит уже явно написать это на чём-то типа Python.
Здравствуйте, Sheridan, Вы писали:
S>Лезеш в ядро, ищеш исходник драйвера видеокарточки, открываеш в редакторе и правиш в нужную сторону до того момента, пока не покажется, что все что мог — сделал.
Покажи плиз место в ядре с *твоими* изменениями. Для примера, а то местные горе-программисты просто не знают что делать
S>Потом делаеш diff и отсылаеш в багтрак ядра. S>Все довольны и тебе говорят спасибо.
Неее, сначала проверят, а уж потом спасибо
А как бы отнесся у юзерам (которых ты админишь), если б каждый себе по-своему ядро переделал? (да так, что у тебя потом какой-нить важный патч не накатится на него)?
И еще, такое подправленное ядро (да и не только ядро) ну нафиг не сгодится, когда напрограммированный на нем софт (раз уж ты на программистов наехал) вдруг будет падать у кастомера а у тебя не будет. Потому что твой традиционный аргумент "у меня работает. что я делаю не так?" сгодится разве что для приказа о твоем увольнении
kochetkov.vladimir однажды (27 июня 2008 [Пятница] 13:39) писал в rsdn.flame.comp:
> Нанять? Kernel-программера под linux? Разве что только если потом этот драйвер продавать, ибо иначе никак не окупится.
вот и я об чем и говорил ранее. В голове мысли только о бабле.
Здравствуйте, Sheridan, Вы писали:
S>a_kutovets однажды (27 июня 2008 [Пятница] 15:27) писал в rsdn.flame.comp:
>> з.ы. Шеридан, у меня давно вообще появились сомнения на счет твего семейного статуса. ты сколько за компами времени проводишь? S>Ну на работе целый день, потом часов 2-5 гуляем с женой, потом домой и за компы. Ну поесть — кино посмотреть тоже конечно успеваем S>У меня жена хоть и юрист, но тоже за компом много сидит
S>-- S>...belive in the matrix...
родите ребенка — все твои разглагольствования на тему, что нужно сидеть и лабать дрова под линукс в свободное время, а также обвинения в меркантильности просто отпадут. тебе самому будет смешно вспоминать, что ты такое говорил.
вообще, к чему я. Шеридан, мы все живем во взрослом мире. для того чтобы жить тебе, твоей семье достойно, нужно именно работать на дядьку/на рынок, а не сидеть ковыряться в линуксе.
Здравствуйте, kochetkov.vladimir, Вы писали:
RO>>Просто несколько маленьких примеров: RO>>cd ../<Tab> покажет все директории, кроме той, в которой ты и так находишься. KV>В стандартной PS-консоли cd ../<Tab> работает также, кроме пропуска текущего каталога.
Она умеет что-то вроде Whatever-Editor C:\w\s\d\e\hosts<Tab>?
RO>>Короче, zsh дополняет всё по Tab. Т. е., совсем всё, включая ключи популярных программ. KV>PS — дополняет по Tab все, что относится к его инфраструктуре (командлеты, алиасы, команды, сценарии, ключи для всех них, помощь и т .п.).
Как именно? Что отображается при Get-<Tab>?
RO>>>>если мало программ имеют вывод, годный для переадресации в другие программы? KV>>>Хм... KV>>>И? :xz: RO>>Всё равно мало. KV>Зачем больше, если для этого есть более удобные средства?
Вопрос в том, зачем же тогда оптимизировать синтаксис для этой работы?
RO>>Я к тому, что от шеллоподобного синтаксиса толку ноль. Как интерактивная оболочка она не очень-то и удобна,
KV>Ром, лично ты — администрировал windows-сеть из этой оболочки? Просто интересно, читал ты "Пастернака" или нет...
Я и из других оболочек windows-сети не администрировал :-)
RO>>а Шеридан давно уже сказал, что если для обычной работы используется одно, а для сценариев — другое, жди багов. И он ведь прав.
KV>Комфортнее всех, имевшихся ранее аналогов под виндой.
Здравствуйте, Ikemefula, Вы писали:
RO>>// кстати, раз мы в КСВ, хотелось бы увидеть аналогичный код на WinAPI
I>Форк только эмулируется, это особенность вындоуса. Экзек не замещает процесс, а создает новый и это тоже особенность. I>Перенаправление есть, только чуток побольше писанины.
Я знаю, как работает CreateProcess. Там где-то есть три хендла для перенаправления stdin, stdout, stderr. Просто было бы интересно взглянуть на готовый код.
fork/exec вообще позволяют делать много интересных вещей. Передавать большее количество дескрипторов, например (if(fork() == 0) { int fd = getSomeFile(); exec("myprogram", "--file", "/dev/fd/" + fd); }).
Никого не смущает, что CreateProcess имеет в общей сложности 35 параметров, в то время как fork — 0, а exec — 3 (имя, аргументы, окружение)? К примеру, там есть особый параметр для задания текущей директории, в то время как Unix way — попросту fork, chdir, exec.
Ну да ладно, это из другого флейма :-)
RO>>Типичная юниксовая система (основанная на SysV init, т. е., почти любая, даже Ubuntu с ее upstart) исполняет при загрузке несколько сотен шелловых скриптов для запуска нужных программ. PowerShell бы для этого не подошла. (Скрипт «#!/bin/sh \n ls 404» выполняется 4 мс; а аналогичное на PowerShell?) Она больше годится для скриптов покрупней, но только зачем нужны крупные скрипты на шелле?..
I>На вындоусе совсем другой подход к склейке программы из кусочков. Там есть технология COM, которая уже мутировала несколько раз.
Угу.
I>Вындоус это система для тупых энд-юзеров вроде меня, а не для людей которые проводят в ОС все время
Энд-юзеру и в линуксе не обязательно рыться где-нибудь в глубинах. Могут возникнуть проблемы с аппаратным обеспечением, для решения понадобится один визит знакомого бородатого админа. А дальше всё и для простого юзера вполне прилично работает.
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Предлагаю баттл. Каждый нечетный раунд — мой, каждый четный — твой. "Хозяин" раунда озвучивает задачу, решенную им с помощью одного из сабжевых средств и представляет, собственно — решение. Второй — решает эту же задачу с помощью своего средства. Остальные — оценивают каждое из сообщений (1,2,3). Играем 10 раундов, каждый ведет по 5. По результатам — сложим оценки и определим победителя. Готов?
На самом деле, начался здесь, но так и не закончился. Итак:
Задача: найти различия в каталогах с вложенными подкаталогами и файлами внутри. некоторые файлы могут совпадать по имени но отличаться по размеру.
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Задача: найти различия в каталогах с вложенными подкаталогами и файлами внутри. некоторые файлы могут совпадать по имени но отличаться по размеру.
KV>Решение на PS:
KV>
kochetkov.vladimir однажды (25 июня 2008 19:38) писал в rsdn.flame.comp:
> Задача: найти различия в каталогах с вложенными подкаталогами и файлами внутри. некоторые файлы могут совпадать по имени но отличаться по размеру.
Дифф между двумя каталогами?
sheridan@amd /data/nix/test/script/data $ diff -rq ./data1 ./data2
Файлы ./data1/emget и ./data2/emget различаются
Только в ./data1: revdep-rebuild
Файлы ./data1/update_2006.0 и ./data2/update_2006.0 различаются
Файлы ./data1/xeffects/xeffects-emerge-all и ./data2/xeffects/xeffects-emerge-all различаются
Только в ./data1/xeffects: xeffects-emerge-base
Файлы ./data1/xeffects/xeffects-emerge-settings и ./data2/xeffects/xeffects-emerge-settings различаются
Ты это, вывод то тоже показывай чтобы было понятно что надо
Здравствуйте, octo47, Вы писали:
KV>>Я правильно понимаю, что если выразить задачу более абстрактно, то нужно с эталонной машины слить некие настройки из профиля эталонного пользователя и перенести их на удаленную машину? O>Не совсем. В общем случае настройки моей рабочей станции имеют мало общего с серверными настройками.
Тогда зачем? Я просто не совсем себе представляю способ применения этого на винде Юникс-вэем попахивает
O>>>Просто интересно как это будет выглядить без winrar.exe KV>>А зачем тут именно winrar? В винде есть вполне стандартный makecab.exe, а в .NET (которая является неотъемлемой частью PS) — System.IO.Packaging в целом, и ZipPackage в частности O>Я про самораспаковывающийся шелл-скрипт (на PS).
Времени нет, но вот proof-of-concept (ps-скрипт, содержащий в себе зазипованный notepad.exe, который его из себя извлекает, распаковывает и запускает. используются только стандартные средства XP и .NET 2.0 и выше):
Здравствуйте, Sheridan, Вы писали:
>> Задача: найти различия в каталогах с вложенными подкаталогами и файлами внутри. некоторые файлы могут совпадать по имени но отличаться по размеру.
S>
S>sheridan@amd /data/nix/test/script/data $ diff -rq ./data1 ./data2
S>Файлы ./data1/emget и ./data2/emget различаются
S>Только в ./data1: revdep-rebuild
S>Файлы ./data1/update_2006.0 и ./data2/update_2006.0 различаются
S>Файлы ./data1/xeffects/xeffects-emerge-all и ./data2/xeffects/xeffects-emerge-all различаются
S>Только в ./data1/xeffects: xeffects-emerge-base
S>Файлы ./data1/xeffects/xeffects-emerge-settings и ./data2/xeffects/xeffects-emerge-settings различаются
S>
S>Ты это, вывод то тоже показывай чтобы было понятно что надо
Это немножко не то, ему не надо было сравнивать содержимое.
Здравствуйте, Roman Odaisky, Вы писали:
RO>Задача: отслеживать изменения в файловой системе. К примеру, всякий раз, как в некоей директории появляется файл, оповещать об этом пользователя.
RO>bash: RO>
RO>while file="$(inotifywait -q -e create --format='%w/%f' /var/crash)"
RO>do
RO> kdialog --msgbox "Something crashed and file $file was created."
RO>done
RO>
Ок, только договорись с Шериданом — каким из четных раундов это будет. А сейчас — моя очередь
Roman Odaisky однажды (26 июня 2008 [Четверг] 15:22) писал в rsdn.flame.comp:
> Или если у Шеридана фантазия кончится.
Шеридан и фантазия — братья вовек, так что пусть администрация РСДН новый форум готовит под этот холивар
Здравствуйте, Cyberax, Вы писали:
C>Здравствуйте, kochetkov.vladimir, Вы писали:
KV>>Ок, но это ничего не даст. Текст, который выводится в результате работы скриптов PS — является лишь одним из способов визуального представления возвращаемых командами объектов. C>Только фича в том, что для типичных shell-скриптов ничего кроме текста особо и не нужно.
Да? Хочешь сказать, что содержимое каталога легче и проще обрабатывать в виде plain-text, нежели в виде связного списка или хэш-таблицы?
Здравствуйте, Sheridan, Вы писали:
S>Давай-давай. Я за то, чтобы этот топик жил вечно, во первых тренировка, а во вторых остальным полезно.
учитывая что с башем и т.п. большая часть тутошних зрителей все же знакома, можно подумать что тебе этот топик нужен для раскрутки powershell'a. что в очередной раз доказывает
a_kutovets однажды (27 июня 2008 17:58) писал в rsdn.flame.comp:
> "у нас такой страшный город, никому не дают поработать. пойду лучше в линуксе покопаются")) > все заивисит от тебя, какие ты приоритеты ставишь себе
Для нерусских: у меня и так одна из высокооплачиваемых работ.
Здравствуйте, _d_m_, Вы писали:
KV>>Более простое... Словарики мужских и женских имен ;)
___>А "Саша" как? ;)
Это что, я был знаком с девушкой по имени Рома :-)
Еще одну звали Владимира. Когда ее награждали за какие-то достижения на олимпиаде, это выглядело примерно так: «За такие-то успехи награждается <фамилия> Владимир... Викторович... Девушка, сядьте, что вам надо?»
Здравствуйте, Sheridan, Вы писали:
S>kochetkov.vladimir однажды (03 июля 2008 [Четверг] 13:54) писал в rsdn.flame.comp:
>> А "Саша" — это вообще-то "Александра" S>У меня есть сотрудница Ани
Здравствуйте, IID, Вы писали:
RO>>Никого не смущает, что CreateProcess имеет в общей сложности 35 параметров, в то время как fork — 0, а exec — 3 (имя, аргументы, окружение)? IID>Посмотрел. И что я должен увидеть ? И причём тут вообще структуры, смотрим внимательно выделенное. Одайский чётко озвучил количество параметров. Где же они ?
Вызов CreateProcess предполагает задание до 35 параметров, часть из которых задается в виде полей структур. Проблема же не в том, что в вызове CreateProcess слишком много запятых (хотя их там изрядно). Сама возможность их задания подчеркивает негибкость архитектуры. Например, для перенаправления stdin в WinAPI требуется задать один из этих параметров, для задания другой рабочей директории — еще один параметр. В то же время в POSIX я могу вызвать что угодно между fork и exec: open+dup2, или chdir, или setuid, и т. п.
Я согласен, что в MS Windows вообще редко приходится создавать процессы, там другие принципы, но WinAPI вообще перегружен и негибок.
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Предлагаю баттл. Каждый нечетный раунд — мой, каждый четный — твой. "Хозяин" раунда озвучивает задачу, решенную им с помощью одного из сабжевых средств и представляет, собственно — решение. Второй — решает эту же задачу с помощью своего средства. Остальные — оценивают каждое из сообщений (1,2,3). Играем 10 раундов, каждый ведет по 5. По результатам — сложим оценки и определим победителя. Готов?
Здравствуйте, Roman Odaisky, Вы писали:
RO>Здравствуйте, kochetkov.vladimir, Вы писали:
KV>>Предлагаю баттл. Каждый нечетный раунд — мой, каждый четный — твой. "Хозяин" раунда озвучивает задачу, решенную им с помощью одного из сабжевых средств и представляет, собственно — решение. Второй — решает эту же задачу с помощью своего средства. Остальные — оценивают каждое из сообщений (1,2,3). Играем 10 раундов, каждый ведет по 5. По результатам — сложим оценки и определим победителя. Готов?
RO>bash — нечестно. Ты еще dash возьми.
RO>То ли дело zsh.
Здравствуйте, Roman Odaisky, Вы писали:
KV>>Задача: найти различия в каталогах с вложенными подкаталогами и файлами внутри. некоторые файлы могут совпадать по имени но отличаться по размеру.
Вот вариант, который учитывает только заданные свойства файла:
А дальше всё сильно зависит от того, что хочется с этим делать. Например, если хочется список файлов, которые в одном месте есть, а в другом нет, то проще всего так:
Roman Odaisky однажды (25 июня 2008 21:27) писал в rsdn.flame.comp:
> Это немножко не то, ему не надо было сравнивать содержимое.
Просто список файлов сравнить? Тогда find+diff
--
...belive in the matrix...
Roman Odaisky однажды (26 июня 2008 00:03) писал в rsdn.flame.comp:
> Но это же совсем ничего не говорит о предмете обсуждения. Сама возможность начудить подобное говорит о многом.
Пусть это будет винапи или wsh — мне не важно, важна возможность.
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Задача: найти различия в каталогах с вложенными подкаталогами и файлами внутри. некоторые файлы могут совпадать по имени но отличаться по размеру.
Это и в фаре можно сделать. тут какбы 2008й год на дворе...
Можно сделать задачку более реалистичной. например, обновление фотоархива. есть фотоаппарат (допустим какой-нибудь cannon ixus — как storage не монтируется) надо сравнить его содержимое с содержимым медиа сервера который, доступен в сети через UPnP.
можно посмотреть как это замечательно делается на PS?
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
TK однажды (26 июня 2008 [Четверг] 13:33) писал в rsdn.flame.comp:
> Давай проще — включим extended desktop (для двух мониторной конфигурации). видео... пусть будет простенький intel
Присылай железо, у меня такого нету
Здравствуйте, Sheridan, Вы писали:
S>Ты это, вывод то тоже показывай чтобы было понятно что надо
Ок, но это ничего не даст. Текст, который выводится в результате работы скриптов PS — является лишь одним из способов визуального представления возвращаемых командами объектов.
Здравствуйте, Sheridan, Вы писали:
>> Давай проще — включим extended desktop (для двух мониторной конфигурации). видео... пусть будет простенький intel S>Присылай железо, у меня такого нету
А без железа совсем никак?
Там всего то надо подфиксить [q]# There is a known issue that DRI doesn't work on pre-965 if maximum is larger than 2048x2048.[q/] http://intellinuxgraphics.org/dualhead.html
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, Roman Odaisky, Вы писали:
RO>Это, собственно, вопрос кому?
Это риторический вопрос
RO>Если я правильно понял, что имеется в виду под extended desktop, то в X11 с RandR 1.2 это выглядит как-то так: RO>xrandr --output name1 --auto --output name2 --auto --right-of name1
В свете максимального разрешения в 2048x2048 это мало актуально...
RO>Можно располагать дисплеи как угодно, даже пересекать:
Ну да, дисплеи можно распологать как угодно только, не друг за другом
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, Sheridan, Вы писали:
S>Roman Odaisky однажды (25 июня 2008 21:27) писал в rsdn.flame.comp:
>> Это немножко не то, ему не надо было сравнивать содержимое. S>Просто список файлов сравнить? Тогда find+diff
Здравствуйте, TK, Вы писали:
TK>Здравствуйте, kochetkov.vladimir, Вы писали:
KV>>Задача: найти различия в каталогах с вложенными подкаталогами и файлами внутри. некоторые файлы могут совпадать по имени но отличаться по размеру.
TK>Это и в фаре можно сделать. тут какбы 2008й год на дворе... TK>Можно сделать задачку более реалистичной. например, обновление фотоархива. есть фотоаппарат (допустим какой-нибудь cannon ixus — как storage не монтируется) надо сравнить его содержимое с содержимым медиа сервера который, доступен в сети через UPnP.
У меня складывается ощущение, что ты про этот кэннон вспоминаешь едва ли не чаще, чем Шеридан про свою генту
TK>можно посмотреть как это замечательно делается на PS?
Пока не знаю. Каким образом система общается с аппаратом и что из себя представляет "медиа-сервер" (имена/протоколы, явки, пароли)?
Твой пример тоже любопытен. Майкрософт, очевидно, рассматривает PowerShell просто как еще один .NET-язык с непривычным синтаксисом? Ждем скриптов на PowerShell в ASP.NET :-)
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>У меня складывается ощущение, что ты про этот кэннон вспоминаешь едва ли не чаще, чем Шеридан про свою генту
Первый раз вспомнил. Я обычно вспоминаю то, что видео драйверов под linux нормальных либо нет либо
KV>Пока не знаю. Каким образом система общается с аппаратом
Например, через Picture Transfer Protocol (PTP)
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
TK однажды (26 июня 2008 [Четверг] 16:25) писал в rsdn.flame.comp:
> Я обычно вспоминаю то, что видео драйверов под linux нормальных либо нет либо
Либо ты давно в линухе не был, либо ты линух давно не видел...
Здравствуйте, Sheridan, Вы писали:
>> Я обычно вспоминаю то, что видео драйверов под linux нормальных либо нет либо S>Либо ты давно в линухе не был, либо ты линух давно не видел...
Видел. ситуация такая, что более менее нормальные драйвера делает NVidia (правда, они закрытые) все остальное — отстой (SVGA карточки конца прошлого века я не рассматриваю).
Вобщем, что делать с
# There is a known issue that DRI doesn't work on pre-965 if maximum is larger than 2048x2048.
?
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
TK пишет:
> Видел. ситуация такая, что более менее нормальные драйвера делает NVidia > (правда, они закрытые) все остальное — отстой (SVGA карточки конца > прошлого века я не рассматриваю).
Что характерно — под Windows ситуация ровно та же
Posted via RSDN NNTP Server 2.1 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Здравствуйте, TK, Вы писали:
S>>Что характерно — под Windows ситуация ровно та же :) TK>В случае с Windows — видео драйвера от того-же интела работают более чем.
Баги есть везде, и ленивые производители тоже.
Если 1С плохо работает под линуксом, то это для кого-то причина не использовать линукс, но не свойство операционной системы как таковой.
Здравствуйте, Кодт, Вы писали:
S>>Монитор выключить сможеш? К>Э... иксы не являются стандартной средой баша. Под цигвином можешь то же самое сделать?
Э... монитор вообще не является стандартной частью компьютера (хотел проверить код шеридана, не нашел линуксовой машинки с монитором ). user32.dll тоже не часть повершелла. Так что тут все поровну, и там и там можно дернуть внешний модуль, как бы тот ни был оформлен
Здравствуйте, Antikrot, Вы писали:
A>Э... монитор вообще не является стандартной частью компьютера (хотел проверить код шеридана, не нашел линуксовой машинки с монитором ). user32.dll тоже не часть повершелла. Так что тут все поровну, и там и там можно дернуть внешний модуль, как бы тот ни был оформлен
Заменить одни X на другие это не так сложно. Их даже можно не ставить С user32.dll так просто сделать не получится
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
TK пишет:
> В случае с Windows — видео драйвера от того-же интела работают более чем.
Я лично пару лет назад наблюдал случай, когда винда XP падала при
передаче более 64 кБ текста в TextOut, причем бага воспроизводилась
только если были установлены интеловские драйвера видеокарты. Впрочем, я
в числе пристойных драйверописателей забыл упомянуть MS — а с их дровами
как раз проблем почти не бывает.
Posted via RSDN NNTP Server 2.1 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Здравствуйте, Antikrot, Вы писали:
A>Здравствуйте, Кодт, Вы писали:
S>>>Монитор выключить сможеш? К>>Э... иксы не являются стандартной средой баша. Под цигвином можешь то же самое сделать? A>Э... монитор вообще не является стандартной частью компьютера (хотел проверить код шеридана, не нашел линуксовой машинки с монитором ).
Наличие монитора — является неотъемлемой частью данной конкретной задачи
A>Так что тут все поровну, и там и там можно дернуть внешний модуль, как бы тот ни был оформлен
Здравствуйте, Roman Odaisky, Вы писали:
RO>Майкрософт, очевидно, рассматривает PowerShell просто как еще один .NET-язык с непривычным синтаксисом?
Они его рассматривают как удобную и простую альтернативу cmd и wsh. Те извраты, что я тут привел с дерганьем WinAPI — это скорее возможность PS для программеров. Для админов же — там вполне простой и понятный синтаксис.
Здравствуйте, kochetkov.vladimir, Вы писали:
S>>>>Монитор выключить сможеш? К>>>Э... иксы не являются стандартной средой баша. Под цигвином можешь то же самое сделать? A>>Э... монитор вообще не является стандартной частью компьютера (хотел проверить код шеридана, не нашел линуксовой машинки с монитором ).
KV>Наличие монитора — является неотъемлемой частью данной конкретной задачи
Именно. Монитора, а не иксов.
У меня баш стоит под виндами (в цигвине). Как мне оттуда достучаться до виндовских ручек?
A>>Так что тут все поровну, и там и там можно дернуть внешний модуль, как бы тот ни был оформлен KV>Да? В баше можно дергать любые .so и сборки mono?
Да и вообще, если можно "дёрнуть внешний модуль", то ответ на любую задачу будет — что под пауэром, что под башем, да хоть под коммандкомом —
./please_do_it
please_do_it.exe
был бы этот внешний модуль доступен...
Я поэтому и запротестовал: xset является элементом ОС, а не шелла.
TK однажды (26 июня 2008 17:50) писал в rsdn.flame.comp:
>>> Вобщем, что делать с
# There is a known issue that DRI doesn't work on pre-965 if maximum is larger than 2048x2048.
? > S>Подсказать или сам догадаешся? > Что, Gentoo это не задета?
Эх...
Поставь тазик рядом. Ибо зная вкусы местный горе-программистов я уверен — буэ потянет.
Поставил? Итак...
Лезеш в ядро, ищеш исходник драйвера видеокарточки, открываеш в редакторе и правиш в нужную сторону до того момента, пока не покажется, что все что мог — сделал.
Потом делаеш diff и отсылаеш в багтрак ядра.
Все довольны и тебе говорят спасибо.
Здравствуйте, Roman Odaisky, Вы писали:
RO>xset является элементом unix way. /bin/bash беспомощен без ls, cp, mv, cat, echo, sort, uniq, find и т. д., и что?
В цигвине все эти ls, cp и прочий феншуй (пардон, юниксвей) есть. А иксов нет...
Здравствуйте, Кодт, Вы писали:
RO>>xset является элементом unix way. /bin/bash беспомощен без ls, cp, mv, cat, echo, sort, uniq, find и т. д., и что? К>В цигвине все эти ls, cp и прочий феншуй (пардон, юниксвей) есть. А иксов нет...
Вообще говоря, есть (посмотри сам в программе установки). Но оно работает как обычное приложение Windows, следовательно не имеет контроля над экраном и разрешением.
Roman Odaisky пишет: > > Во-первых, спасибо Владимиру за примеры. > > Вот что я понял. Что такое оболочка, она же shell, представителями > которой являются bash, PowerShell и многие другие? Это язык > программирования, отличающийся тем, что он в первую очередь приспособлен > для запуска внешних программ (синтаксически, большинство оболочек > запускает программы простым указанием их имени) и его интерпретатор, > который позволяет исполнять программы на этом языке как интерактивно, > так и неинтерактивно. >
Вот именно.
> > Проблема только в том, что ни то, ни то не приносит существенных > преимуществ.
+1
Существенным преимуществом для меня было бы, например, экспорт делагатов
на файловую систему. Или директория как first order object. Чтобы
директорию можно было вернуть из функции, например. IIRC в Plan9
переменные среды были директориями.
На уровне ассемблера нужно думать, где разместить ту или иную
переменную, в регистре или памяти. Объекты в памяти адресовать косвенно
или со стека. bash — это как шелловый аналог ассемблера. Хорошо,
МАКРОассемблера, но всё равно ассемблера. Он не позволяет действительно
подняться на уровень выше.
> Вывод: PowerShell — это видоизменение C# путем смены синтаксиса, > добавления интерпретатора и интерактивного режима, цель чего избегает > моего понимания.
+1
И то, и другое из того, что я предложил навскидку, можно реализовать в
виде библиотек. Однако, в шелле им самое место.
Lloyd однажды (26 июня 2008 23:46) писал в rsdn.flame.comp:
> Потом считаешь потраченное время, умножаешь на часовую ставку среднего программиста и понимаешь, что дешевле было купить Висту
Вот именно изза этого я и называю вас горе-программистами.
Потому как у вас все исчисляется не готовыми продуктами/красивым кодом/законченными проектами/участием в открытых проектах, а баблом, баблом и еще ленью.
Казалось бы — вот программист, он знает язык, он знает механизмы, умеет читать доки и искать нужное в этих доках, ну что ему стоит сесть и подправить чужой код?
Ан нет — только брезгливо морщатся. Куда ж им, императорам личности в руки марать...
Здравствуйте, Sheridan, Вы писали:
>> Потом считаешь потраченное время, умножаешь на часовую ставку среднего программиста и понимаешь, что дешевле было купить Висту S>Вот именно изза этого я и называю вас горе-программистами.
Ты совершенно прав, как программист-железячник я — горе, у меня другая специализация.
S>Потому как у вас все исчисляется не готовыми продуктами/красивым кодом/законченными проектами/участием в открытых проектах, а баблом, баблом и еще ленью.
О, пошла новая риторика. Как кто начинает сравнивать линух с виндой, так вы сразу ныть начинаете, что дорого. А теперь оказывается, что для вас главное — красота
S>Казалось бы — вот программист, он знает язык, он знает механизмы, умеет читать доки и искать нужное в этих доках, ну что ему стоит сесть и подправить чужой код?
Ну языком-то просто болтать, ты взял бы и поправил, если так все просто.
S>Ан нет — только брезгливо морщатся. Куда ж им, императорам личности в руки марать...
нет, просто прежде чем принимать решение, нужно оценивать эффективность решения. в описанном сценарии линукс чисто сливает.
Здравствуйте, OCTAGRAM, Вы писали:
OCT>Существенным преимуществом для меня было бы, например, экспорт делагатов OCT>на файловую систему. Или директория как first order object. Чтобы OCT>директорию можно было вернуть из функции, например. IIRC в Plan9 OCT>переменные среды были директориями.
Это в теории хорошо выглядит, на практике появляются вопросы. В частности, возможны неустранимые race-condition'ы и прочие проблемы.
Это в Reiser4 была такая возможность — монтировать каталоги как файлы. Разработчики Linux VFS как раз из-за этих проблем и забраковали такую фичу.
С другой стороны, в Линуксе, на Маках и прочих FreeBSD (и даже уже на Windows ) есть FUSE — на его основе такое можно попробовать сделать.
Lloyd однажды (27 июня 2008 00:10) писал в rsdn.flame.comp:
> Ну языком-то просто болтать, ты взял бы и поправил, если так все просто.
Когда меня касалось — правил.
Cyberax пишет: > > Здравствуйте, OCTAGRAM, Вы писали: > > OCT>Существенным преимуществом для меня было бы, например, экспорт > делагатов > OCT>на файловую систему. Или директория как first order object. Чтобы > OCT>директорию можно было вернуть из функции, например. IIRC в Plan9 > OCT>переменные среды были директориями. > Это в теории хорошо выглядит, на практике появляются вопросы. В > частности, возможны неустранимые race-condition'ы и прочие проблемы. >
Неустранимые проблемы, какие есть, есть и сейчас, только сейчас
устранимых больше.
> Это в Reiser4 была такая возможность — монтировать каталоги как файлы. > Разработчики Linux VFS как раз из-за этих проблем и забраковали такую фичу. >
А как это вообще связано с 9P?
> С другой стороны, в Линуксе, на Маках и прочих FreeBSD (и даже уже на > Windows ) есть FUSE — на его основе такое можно попробовать сделать.
Такое — это что? экспорт делагатов на файловую систему или директория
как first order object? Ни для того, ни другого FUSE не нужен.
Экспорт делегатов на файловую систему реализуется как исполняемые
файлы–заглушки с содержимым типа #!/usr/bin/delegate-stub /path/to/IPC
delegate-stub связывается по IPC с оригинальным процессом, и затем, как
зомби, выполняет все приходящие ему команды. Пишет в stdout, читает
stdin — всё по команде от оригинального процесса. FUSE здесь как раз не
поможет. Я не знаю, было ли это сделано в Plan9, но вообще, там можно
было бы обойтись без хаков типа "#!/usr/bin/delegate-stub /path/to/IPC",
если эффект запуска программы так же программируем, как и сама файловая
система.
Директория как first order object тоже FUSE вполне реализуема. Да и FUSE
тут ничего не решает. Директорию надо где–то хранить, на диске или в
памяти. Временные объекты в /tmp, постоянные на ЖД. А FUSE как бы никуда
и не вписывается здесь. Тут главное, чтобы shell сам размещал временные
директории где–нибудь, а где — не прослеживалось бы так явно, как сейчас.
Здравствуйте, Roman Odaisky, Вы писали:
RO>Во-первых, спасибо Владимиру за примеры.
RO>PowerShell — это C# со специфическим синтаксисом (впрочем, то же самое можно сказать про любые другие два языка из .NET) и интерпретатором. Что она может? То же, что и C#. Что она может удобнее и проще, чем C#? Работать интерактивно и взаимодействовать с другими программами.
PS не имеет никакого отношения ни к С# и его синтаксису в частности, ни к .NET в целом, за исключением того, что является "мостиком" для использования возможностей .NET в задачах управления и конфигурирования ОС.
RO>Проблема только в том, что ни то, ни то не приносит существенных преимуществ. В интерактивной работе PowerShell заметно проигрывает той же zsh, преимущественно из-за автодополнялки
Путь можно было бы пролистывать "C:<Tab-Tab-Tab...>", вторую команду можно было бы не набирать заново, а нажав стрелку вверх вернуть предыдущую команду и откорректировать ее и т.д. и т.п. В чем тут PS проигрывает zsh?
RO>и сложных shell patterns (они же шаблоны или wildcards). Первое к PowerShell приделать можно, а второе — очень затруднительно из-за того, что традиционно со времен DOS программы сами обрабатывают свои аргументы и раскрывают шаблоны. Взаимодействие же с другими программами затруднено тем, что взаимодействовать-то не с чем. В Unix традиционно большинство возможностей доступны в виде программ командной строки, которые хорошо взаимодействуют между собой, но не так обстоят дела в MS Windows. Много ли толку от сокращенной записи
<skipped> RO>если мало программ имеют вывод, годный для переадресации в другие программы?
— выведет IP первого интерфейса, полученный из стандартной ipconig.
И?
Куча програм, которые можно связать между собой средствами шелла — это Unix-way, да. Но я же и не утверждаю, что PS лучше подойдет в nix-среде, чем ее родные оболочки? Спор был о том, что PS дает windows-администратору не менее полноценный и удобный контроль над ОС нежели аналогичные средства под никсах
Winway'ем в данном случае (а точнее — psway'ем), является наличие кучи командлетов (бинарных модулей, либо сценариев PS), взаимодействующих между собой в т.ч. и по тем же пайпам, используя в качестве формата данных не простой текст, а более структурированные и управляемые сущности. Возможность же вызвать стандартную ping.exe и легко распарсить ее вывод — никто у PS не отбирал. Просто этот unix-way не так удобен, как например, использование .NET'овского ping'a.
RO>В MS Windows это делается не шелловым скриптом, а целой программой, которая в лучшем случае выглядит как library2.process_data(library1.get_data()).
С чего это ты взял?
RO>Если я кого-то не убедил, предлагаю посчитать, сколько раз Владимир вызывал из своих скриптов внешние программы, что так легко делать в шеллах, стоит лишь упомянуть их имя. Положительного числа не получится.
Задача шелла — не облегчить взаимодействие внешних программ. Это — лишь один из путей решений общей задачи управления системой, стоящей перед любым шеллом.
RO>В Unix на шелле никто не пишет большие программы. Шелловые скрипты просто служат для «склейки» воедино разных кусочков системы. Например, есть папка /etc/acpi/suspend.d, в которой находятся исполняемые файлы, которые система исполняет при переходе в ждущий режим. Если я хочу выгрузить какой-нибудь модуль, или отправить куда-то сообщение, или еще что-нибудь, я положу туда свой файл. Что, как не шелл, лучше всего подойдет для этого? Я могу написать бинарник хоть на C, системе всё равно, но проще всего положить туда «for i in $INTERFACES; do ifconfig $i down; done», чем пытаться сделать то же на «серьезном» языке программирования. Т. е., этот скрипт будет просто мостиком между /etc/acpi/hibernate.sh и /sbin/ifconfig, не делая сам по себе никакой особенной работы.
В никсах шелл-скрипты — фактически являются частью ОС. Это не говорит о том, что под виндой должно быть точно также.
RO>Типичная юниксовая система (основанная на SysV init, т. е., почти любая, даже Ubuntu с ее upstart) исполняет при загрузке несколько сотен шелловых скриптов для запуска нужных программ. PowerShell бы для этого не подошла.
А кто утверждал, что она подойдет для init'a никсовой системы?
RO>Вывод: PowerShell — это видоизменение C# путем смены синтаксиса, добавления интерпретатора и интерактивного режима, цель чего избегает моего понимания.
"это видоизменение C# путем смены синтаксиса" — это сильно. Синтаксис паскаля тоже можно доработать напильником, чтобы perl получился Цель создания PS — дать возможно полноценно управлять ОС из командной строки, как в интерактивном режиме, так и из сценариев.
S>Лезеш в ядро, ищеш исходник драйвера видеокарточки, открываеш в редакторе и правиш в нужную сторону до того момента, пока не покажется, что все что мог — сделал. S>Потом делаеш diff и отсылаеш в багтрак ядра. S>Все довольны и тебе говорят спасибо.
Здравствуйте, Sheridan, Вы писали:
S>Лезеш в ядро, ищеш исходник драйвера видеокарточки, открываеш в редакторе и правиш в нужную сторону
А мне что делать? Нет, я серьезно... У меня вот на ноуте PCMCIA EDGE-модем в линуксе глючит, я уже писал об этом. Навыков программирования драйверов под линукс — у меня нет, тема — слишком серьезная для меня как для непрограммера, чтобы заняться ее изучением ради настройки модема. Что делать-то?
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Предлагаю баттл. Каждый нечетный раунд — мой, каждый четный — твой. "Хозяин" раунда озвучивает задачу, решенную им с помощью одного из сабжевых средств и представляет, собственно — решение. Второй — решает эту же задачу с помощью своего средства. Остальные — оценивают каждое из сообщений (1,2,3). Играем 10 раундов, каждый ведет по 5. По результатам — сложим оценки и определим победителя. Готов?
Шеридан, третий раунд играть будем, или и так — уже каждый свои выводы сделал и все понял? Если будем — закину условия задачи.
kochetkov.vladimir однажды (27 июня 2008 [Пятница] 12:17) писал в rsdn.flame.comp:
> Шеридан, третий раунд играть будем, или и так — уже каждый свои выводы сделал и все понял? Если будем — закину условия задачи.
Давай-давай. Я за то, чтобы этот топик жил вечно, во первых тренировка, а во вторых остальным полезно.
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Да? В баше можно дергать любые .so и сборки mono?
Как нефиг делать Пишешь скрипт, который генерит сишную обертку и тут же вызываешь компилятор Сразу скажу что компилятор у меня взялся примерно оттуда же, откуда ты взял моно (который имхо вообще тут чужеродное тело).
kochetkov.vladimir однажды (27 июня 2008 [Пятница] 12:14) писал в rsdn.flame.comp:
> А мне что делать? Нет, я серьезно... У меня вот на ноуте PCMCIA EDGE-модем в линуксе глючит, я уже писал об этом. Навыков программирования драйверов под линукс — у меня нет, тема > — слишком серьезная для меня как для непрограммера, чтобы заняться ее изучением ради настройки модема. Что делать-то?
нанять программиста, если сильно важно.
изучить самому, если важно
ждать если неважно
забить если пофиг
В том-то и дело, что:
S>нанять программиста, если сильно важно.
Нанять? Kernel-программера под linux? Разве что только если потом этот драйвер продавать, ибо иначе никак не окупится.
S>изучить самому, если важно S>ждать если неважно
Зачем, если уже сейчас есть работающие альтернативы?
S>забить если пофиг
Да вот я и забил, оставшись на xp. А если бы не этот досадный факт — я бы на ноуте давно на linux перешел по ряду причин. А пока — приходится SUSE под виртуалкой гонять
>> — слишком серьезная для меня как для непрограммера, чтобы заняться ее изучением ради настройки модема. Что делать-то? S>нанять программиста, если сильно важно. S>изучить самому, если важно S>ждать если неважно S>забить если пофиг
Если сильно важно, будет установлена винда И к лени это не имеет никакого отношения. Мне платят совсем не за патчинг ядра линукса И системное программирование меня не интересует совсем.
Здравствуйте, Roman Odaisky, Вы писали:
RO>// кстати, раз мы в КСВ, хотелось бы увидеть аналогичный код на WinAPI
Форк только эмулируется, это особенность вындоуса. Экзек не замещает процесс, а создает новый и это тоже особенность.
Перенаправление есть, только чуток побольше писанины.
RO>Типичная юниксовая система (основанная на SysV init, т. е., почти любая, даже Ubuntu с ее upstart) исполняет при загрузке несколько сотен шелловых скриптов для запуска нужных программ. PowerShell бы для этого не подошла. (Скрипт «#!/bin/sh \n ls 404» выполняется 4 мс; а аналогичное на PowerShell?) Она больше годится для скриптов покрупней, но только зачем нужны крупные скрипты на шелле?..
На вындоусе совсем другой подход к склейке программы из кусочков. Там есть технология COM, которая уже мутировала несколько раз.
Вындоус это система для тупых энд-юзеров вроде меня, а не для людей которые проводят в ОС все время
KV>Путь можно было бы пролистывать "C:<Tab-Tab-Tab...>", вторую команду можно было бы не набирать заново, а нажав стрелку вверх вернуть предыдущую команду и откорректировать ее и т.д. и т.п. В чем тут PS проигрывает zsh?
И так далее. Из мелочей: если ты находишься в /var/www/dev.mysite.com, то cd dev www отправит тебя в /var/www/www.mysite.com. cd ../<Tab> покажет все директории, кроме той, в которой ты и так находишься. Есть исправлялка ошибок, но я ей не пользуюсь.
Короче, zsh дополняет всё по Tab. Т. е., совсем всё, включая ключи популярных программ.
RO>>если мало программ имеют вывод, годный для переадресации в другие программы? KV>Хм... KV>$ipstring = ipconfig.exe | select-string "IP-" | select-object; $ipstring.ToString().Split(":")[1].Trim() | echo KV>- выведет IP первого интерфейса, полученный из стандартной ipconig.
KV>И? :xz:
Всё равно мало.
RO>>Вывод: PowerShell — это видоизменение C# путем смены синтаксиса, добавления интерпретатора и интерактивного режима, цель чего избегает моего понимания.
KV>"это видоизменение C# путем смены синтаксиса" — это сильно. Синтаксис паскаля тоже можно доработать напильником, чтобы perl получился :))) Цель создания PS — дать возможно полноценно управлять ОС из командной строки, как в интерактивном режиме, так и из сценариев.
Я к тому, что от шеллоподобного синтаксиса толку ноль. Как интерактивная оболочка она не очень-то и удобна, а Шеридан давно уже сказал, что если для обычной работы используется одно, а для сценариев — другое, жди багов. И он ведь прав.
P. S. Идея PS — обмен бинарными объектами вместо текста — хорошая, хоть и не новая. Реализация — не очень.
P. P. S. Хорошо бы приделать S-выражения к юниксовым утилитам. Тем более, что дело-то нехитрое, и интерактивности ничуть не вредит:
~ :) ls /
bin cdrom etc initrd lib media opt root srv tmp var
boot dev home initrd.img lost+found mnt proc sbin sys usr vmlinuz
~ :) ls --hypothetical-sexp /
(bin cdrom etc initrd lib media opt root srv tmp var
boot dev home "initrd.img" "lost+found" mnt proc sbin sys usr vmlinuz)
Здравствуйте, Sheridan, Вы писали:
S>kochetkov.vladimir однажды (27 июня 2008 [Пятница] 13:39) писал в rsdn.flame.comp:
>> Нанять? Kernel-программера под linux? Разве что только если потом этот драйвер продавать, ибо иначе никак не окупится. S>вот и я об чем и говорил ранее. В голове мысли только о бабле.
Потому что:
— мы живем в реальном мире, а кушать хочется (hint: основные разработчики под линукс работают на совсем нехилых зарплатах, нахаляву горбатиться никто не хочет)
— мы живем в реальном мире, в котором жизнь ой как коротка, и тратить время на вещи, тебе абсолюно неинтересные или требуемые тебе максимум раз в жизни с неясной отдачей, совсем не хочется. Хочтся пить пиво, рожать детей, смотреть футбольные матчи и т.п. (а на это все, кстати, тоже нужны деньги )
— мы живем в реальном мире, в котором нам платят за то, на что нас нанимали. Если меня наняли разрабаывать веб-приложение на Coldfusion, мне никто и никогда не заплатит за патчинг ядра линукса. Из чего следует подпункт:
-- если мне не платят на работе за патчинг линукса, я должен буду этим заниматься в свободной время. Я, знаешь, лучше про типы рекурсии
почитаю. От этого мне, как программисту, будет намного больше пользы, чем ковыряние в кишках системы. Или пойду, жирок в бассейне сгоню (а на бассейн опять же нужны деньги ).
Здравствуйте, Roman Odaisky, Вы писали:
RO>Просто несколько маленьких примеров:
RO>cd ../<Tab> покажет все директории, кроме той, в которой ты и так находишься.
В стандартной PS-консоли cd ../<Tab> работает также, кроме пропуска текущего каталога.
RO>Короче, zsh дополняет всё по Tab. Т. е., совсем всё, включая ключи популярных программ.
PS — дополняет по Tab все, что относится к его инфраструктуре (командлеты, алиасы, команды, сценарии, ключи для всех них, помощь и т .п.).
RO>>>если мало программ имеют вывод, годный для переадресации в другие программы? KV>>Хм... KV>>$ipstring = ipconfig.exe | select-string "IP-" | select-object; $ipstring.ToString().Split(":")[1].Trim() | echo KV>>- выведет IP первого интерфейса, полученный из стандартной ipconig.
KV>>И?
RO>Всё равно мало.
Зачем больше, если для этого есть более удобные средства?
RO>Я к тому, что от шеллоподобного синтаксиса толку ноль. Как интерактивная оболочка она не очень-то и удобна,
Ром, лично ты — администрировал windows-сеть из этой оболочки? Просто интересно, читал ты "Пастернака" или нет...
RO>а Шеридан давно уже сказал, что если для обычной работы используется одно, а для сценариев — другое, жди багов. И он ведь прав.
А, ну раз Шеридан сказал... Я не знаю, что там использует Шеридан. Но и в интерактивном режиме и в режиме сценариев — работа с PS достаточно комфортна. Комфортнее всех, имевшихся ранее аналогов под виндой. Если же хочется чтобы было еще комфортнее — есть куча сторонних хостов для PS, в т.ч. и бесплатных, в т.ч. и открытых. Начиная с плагинов для фара и альтернатив виндовой консоли, и заканчивая полноценными IDE (с возможностью как интерактивной работы, так и написания и полноценной отладки сценариев) — powershell plus, например. Там вообще тотальный intellisense, подсвечивание синтаксиса и ошибок, установка точек прерывания, пошаговое выполнение, watch'и и т.п.
RO>P. S. Идея PS — обмен бинарными объектами вместо текста — хорошая, хоть и не новая. Реализация — не очень.
Здравствуйте, Roman Odaisky, Вы писали:
RO>Здравствуйте, kochetkov.vladimir, Вы писали:
KV>>Шеридан, третий раунд играть будем, или и так — уже каждый свои выводы сделал и все понял? Если будем — закину условия задачи.
RO>Лучше распей с Шериданом обещанный баттл, он тебе напишет драйвера для твоего модема, ты поставишь себе линукс, будешь здесь хвалить *sh и ругать PowerShell в частности и Майкрософт вообще, все будут счастливы, твоя компания станет сверхзащищена от всех вирусов и хакеров, на RSDN поменяются default city и default OS. Чего же ты хотел, виндекапец всё-таки.
...default-city будет переименован в "Нью-Васюки"...
Роман, ты невнимательно читаешь. Линукс у меня давно стоит, и я его достаточно активно использую (в качестве рядового пользователя по отношению к администрированию и программингу, если что). Ну, на работе, по крайней мере. Как в виртуалке, так и на одной из стационарных рабочих машин.
kochetkov.vladimir однажды (27 июня 2008 [Пятница] 13:50) писал в rsdn.flame.comp:
> Шеридан, ты это... На досуге поинтересуйся — во сколько обойдется заказная разработка драйвера под закрытое устройство, прежде чем советовать такое, а потом рассуждать об > алчности собеседника, ага?
Я понимаю, что всему своя цена, но и для каждого потолок свой. Я смогу за безделушку выкинуть ну рублей 300 максимум. А ктото и 3000$ за деньги не считает.
И верхняя планка это уже восемнадцатый вопрос. Не можеш столько денег выложить — разбирайся сам. Логика простая
Здравствуйте, Sheridan, Вы писали:
S>kochetkov.vladimir однажды (27 июня 2008 [Пятница] 13:50) писал в rsdn.flame.comp:
>> Шеридан, ты это... На досуге поинтересуйся — во сколько обойдется заказная разработка драйвера под закрытое устройство, прежде чем советовать такое, а потом рассуждать об >> алчности собеседника, ага? S>Я понимаю, что всему своя цена, но и для каждого потолок свой. Я смогу за безделушку выкинуть ну рублей 300 максимум. А ктото и 3000$ за деньги не считает. S>И верхняя планка это уже восемнадцатый вопрос. Не можеш столько денег выложить — разбирайся сам. Логика простая S>
Логика простая, даже если пойти еще дальше: не можешь столько денег выложить, слишком ценишь свое время, чтобы разбираться самостоятельно — выложи значительно меньшую сумму за уже работающую ОС
S>Ясно, для тебя программирование — станок. S>Ты на этом станке деньги зарабатываеш, но этот станок тебе ни капли не интересен.
S>-- S>...belive in the matrix...
да, программирование — это станок для зарабатывания денег. так же, как бухгалтерия для бухгалтеров, юриспруденция для юристов и т.д. и т.п.
но говорить, что этот "станок" нам неинтресен, слишком смелое заявление. БОЛЬШИНСТВО выбирает профессию, которая по душе.
з.ы. Шеридан, у меня давно вообще появились сомнения на счет твего семейного статуса. ты сколько за компами времени проводишь?
a_kutovets однажды (27 июня 2008 [Пятница] 15:27) писал в rsdn.flame.comp:
> з.ы. Шеридан, у меня давно вообще появились сомнения на счет твего семейного статуса. ты сколько за компами времени проводишь?
Ну на работе целый день, потом часов 2-5 гуляем с женой, потом домой и за компы. Ну поесть — кино посмотреть тоже конечно успеваем
У меня жена хоть и юрист, но тоже за компом много сидит
a_kutovets однажды (27 июня 2008 [Пятница] 15:51) писал в rsdn.flame.comp:
> родите ребенка — все твои разглагольствования на тему, что нужно сидеть и лабать дрова под линукс в свободное время, а также обвинения в меркантильности просто отпадут. тебе > самому будет смешно вспоминать, что ты такое говорил.
Как родим — посмотрим Не стану опровергать или соглашаться
> вообще, к чему я. Шеридан, мы все живем во взрослом мире. для того чтобы жить тебе, твоей семье достойно, нужно именно работать на дядьку/на рынок, а не сидеть ковыряться в > линуксе.
Я работаю о0
На основной работе+шабашки. Успеваю просто...
Здравствуйте, Roman Odaisky, Вы писали:
RO>Она умеет что-то вроде Whatever-Editor C:\w\s\d\e\hosts<Tab>?
Если ты про дополнение путей в аргументах какой-либо левой проги, то да — умеет.
RO>>>Короче, zsh дополняет всё по Tab. Т. е., совсем всё, включая ключи популярных программ. KV>>PS — дополняет по Tab все, что относится к его инфраструктуре (командлеты, алиасы, команды, сценарии, ключи для всех них, помощь и т .п.).
RO>Как именно? Что отображается при Get-<Tab>?
При каждом нажатии tab, в цикле крутятся возможные варианты дополнения данной конструкции.
RO>>>>>если мало программ имеют вывод, годный для переадресации в другие программы? KV>>>>Хм... KV>>>>И? RO>>>Всё равно мало. KV>>Зачем больше, если для этого есть более удобные средства?
RO>Вопрос в том, зачем же тогда оптимизировать синтаксис для этой работы?
Дык он не для этой работы был оптимизирован. Ровно также в PS осуществляется взаимодействие между командлетами и отдельными сценариями.
RO>>>Я к тому, что от шеллоподобного синтаксиса толку ноль. Как интерактивная оболочка она не очень-то и удобна, KV>>Ром, лично ты — администрировал windows-сеть из этой оболочки? Просто интересно, читал ты "Пастернака" или нет... RO>Я и из других оболочек windows-сети не администрировал
Мда...
RO>>>а Шеридан давно уже сказал, что если для обычной работы используется одно, а для сценариев — другое, жди багов. И он ведь прав. KV>>Комфортнее всех, имевшихся ранее аналогов под виндой.
RO>Попробуй в своей SuSE wget 'http://qwertty.com/sync/roma/.zshrc' && sudo apt-get install zsh. И просто нажимай Tab почаще.
Здравствуйте, Sheridan, Вы писали:
S>Mamut однажды (27 июня 2008 [Пятница] 14:01) писал в rsdn.flame.comp:
S>Ясно, для тебя программирование — станок. S>Ты на этом станке деньги зарабатываеш, но этот станок тебе ни капли не интересен.
Прикинь — да. В чем разница между мной и други нормальным работником? Ты, кстати, полностью поскипал все мои аргументы.
Мне может быть анально неинтересно копаться в нелрах системы. Зачем? Новых програмерских знаний я там не почерпну. Я лучше про типы рекурсий
>> вообще, к чему я. Шеридан, мы все живем во взрослом мире. для того чтобы жить тебе, твоей семье достойно, нужно именно работать на дядьку/на рынок, а не сидеть ковыряться в >> линуксе. S>Я работаю о0 S>На основной работе+шабашки. Успеваю просто...
и при этом ты можешь потратить на какую-то мелочь (для себя, жены, будущего ребенка) всего 300 рублей. может, стоит задуматься, что делаешь в жизни что-то не так?
Здравствуйте, kochetkov.vladimir, Вы писали:
RO>>Она умеет что-то вроде Whatever-Editor C:\w\s\d\e\hosts<Tab>? KV>Если ты про дополнение путей в аргументах какой-либо левой проги, то да — умеет.
Если ты наберешь именно так: «cd C:\w\s\d\e» и нажмешь Tab, что произойдет?
RO>>>>Короче, zsh дополняет всё по Tab. Т. е., совсем всё, включая ключи популярных программ. KV>>>PS — дополняет по Tab все, что относится к его инфраструктуре (командлеты, алиасы, команды, сценарии, ключи для всех них, помощь и т .п.). RO>>Как именно? Что отображается при Get-<Tab>? KV>При каждом нажатии tab, в цикле крутятся возможные варианты дополнения данной конструкции.
Понятно. Неудобно. Намного лучше видеть весь список, да еще и с комментариями. Но это, может, когда-нибудь и приделают.
KV>>>Зачем больше, если для этого есть более удобные средства? RO>>Вопрос в том, зачем же тогда оптимизировать синтаксис для этой работы? KV>Дык он не для этой работы был оптимизирован. Ровно также в PS осуществляется взаимодействие между командлетами и отдельными сценариями.
Чем же тогда запись x | y | z настолько лучше, чем z(y(x()))?
Чем вообще PowerShell удобнее C#?
RO>>Попробуй в своей SuSE wget 'http://qwertty.com/sync/roma/.zshrc' && sudo apt-get install zsh. И просто нажимай Tab почаще. KV>Ок, попробую. А что в твоем .zshrc особенного?
Можешь и другой zshrc нагуглить. Там при первом запуске zsh появляется мастер и пытается создать себе конфиг, там много букв, ты скажешь, что времени нет, и будет у тебя неинтересный пустой конфиг :-) Так что лучше начинать с какого-нибудь готового. И prompt у меня удобнее всех виденных аналогов :-)
Здравствуйте, Roman Odaisky, Вы писали:
RO>Здравствуйте, kochetkov.vladimir, Вы писали:
RO>>>Она умеет что-то вроде Whatever-Editor C:\w\s\d\e\hosts<Tab>? KV>>Если ты про дополнение путей в аргументах какой-либо левой проги, то да — умеет.
RO>Если ты наберешь именно так: «cd C:\w\s\d\e» и нажмешь Tab, что произойдет?
последний каталог — "е" изменится на следующий по списку из имеющихся в "C:\w\s\d\".
RO>Чем же тогда запись x | y | z настолько лучше, чем z(y(x()))?
первая привычнее админам, вторая — программерам. Через пайпы перенаправить можно вывод любого приложения, в функциональном стиле — только то, что является частью PS. Плюс есть ряд ограничений на использование варианта с пайпами (касающийся в основном доступа к полям объектов .NET).
RO>Чем вообще PowerShell удобнее C#?
Тем, что C# не является интерактивным и не приспособлен под использование в качестве языкового средства шелла.
RO>>>Попробуй в своей SuSE wget 'http://qwertty.com/sync/roma/.zshrc' && sudo apt-get install zsh. И просто нажимай Tab почаще. KV>>Ок, попробую. А что в твоем .zshrc особенного?
RO>Можешь и другой zshrc нагуглить. Там при первом запуске zsh появляется мастер и пытается создать себе конфиг, там много букв, ты скажешь, что времени нет, и будет у тебя неинтересный пустой конфиг Так что лучше начинать с какого-нибудь готового. И prompt у меня удобнее всех виденных аналогов
a_kutovets однажды (27 июня 2008 [Пятница] 17:05) писал в rsdn.flame.comp:
> S>Я работаю о0 > S>На основной работе+шабашки. Успеваю просто... > и при этом ты можешь потратить на какую-то мелочь (для себя, жены, будущего ребенка) всего 300 рублей. может, стоит задуматься, что делаешь в жизни что-то не так?
Приедь к нам в Минеральные Воды, поработай чуток.
Здравствуйте, kochetkov.vladimir, Вы писали:
RO>>>>Она умеет что-то вроде Whatever-Editor C:\w\s\d\e\hosts<Tab>? KV>>>Если ты про дополнение путей в аргументах какой-либо левой проги, то да — умеет. RO>>Если ты наберешь именно так: «cd C:\w\s\d\e» и нажмешь Tab, что произойдет? KV>последний каталог — "е" изменится на следующий по списку из имеющихся в "C:\w\s\d\".
Ну вот, а могла бы превратить это в «C:\WINDOWS\System32\drivers\etc».
Здравствуйте, Sheridan, Вы писали:
S>a_kutovets однажды (27 июня 2008 [Пятница] 17:05) писал в rsdn.flame.comp:
>> S>Я работаю о0 >> S>На основной работе+шабашки. Успеваю просто... >> и при этом ты можешь потратить на какую-то мелочь (для себя, жены, будущего ребенка) всего 300 рублей. может, стоит задуматься, что делаешь в жизни что-то не так? S>Приедь к нам в Минеральные Воды, поработай чуток.
S>-- S>...belive in the matrix...
"у нас такой страшный город, никому не дают поработать. пойду лучше в линуксе покопаются"))
все заивисит от тебя, какие ты приоритеты ставишь себе
з.ы. сорь за оффтоп кстати, тема ж-то про ps vs bash
Здравствуйте, Roman Odaisky, Вы писали:
RO>>>Типичная юниксовая система (основанная на SysV init, т. е., почти любая, даже Ubuntu с ее upstart) исполняет при загрузке несколько сотен шелловых скриптов для запуска нужных программ. PowerShell бы для этого не подошла. (Скрипт «#!/bin/sh \n ls 404» выполняется 4 мс; а аналогичное на PowerShell?) Она больше годится для скриптов покрупней, но только зачем нужны крупные скрипты на шелле?..
I>>На вындоусе совсем другой подход к склейке программы из кусочков. Там есть технология COM, которая уже мутировала несколько раз.
RO>Угу.
I>>Вындоус это система для тупых энд-юзеров вроде меня, а не для людей которые проводят в ОС все время
RO>Энд-юзеру и в линуксе не обязательно рыться где-нибудь в глубинах. Могут возникнуть проблемы с аппаратным обеспечением, для решения понадобится один визит знакомого бородатого админа. А дальше всё и для простого юзера вполне прилично работает.
Это и в виндовсе так с разницей, что драйвера свежее
Здравствуйте, Sheridan, Вы писали:
S>Mamut однажды (27 июня 2008 [Пятница] 14:01) писал в rsdn.flame.comp:
S>Ясно, для тебя программирование — станок. S>Ты на этом станке деньги зарабатываеш, но этот станок тебе ни капли не интересен.
Мои извинения за столь длительное отсутствие, конец полугодия — дел по горло
Судя по последним постам Шеридана в различных топиках, день его очередной бани — не за горами, посему поспешу продолжить баттл, пока он еще тут:
Задача на третий раунд нетривиальная, но вполне реальная. Скажу сразу, в 2006 году, когда довелось ее решать, я воспользовался иными средствами по причине отсутствия PS как такового, сейчас вот — переписываю решение на нем, чтобы закинуть сюда. Задача следующая:
Имея доступ к каталогу (LDAP), содержащему списки пользователей и компьютеров, но не хранящему информацию о поле пользователей, обеспечить на всех компьютерах сети, вывод на экран поздравления с 8-ым марта в момент интерактивного входа пользователя женского пола.
kochetkov.vladimir однажды (02 июля 2008 [Среда] 13:06) писал в rsdn.flame.comp:
> Имея доступ к каталогу (LDAP), содержащему списки пользователей и компьютеров, но не хранящему информацию о поле пользователей, обеспечить на всех компьютерах сети, вывод на > экран поздравления с 8-ым марта в момент интерактивного входа пользователя женского пола.
Думаю задача сведется к копипасту (+ небольшая переделка) твоего решения для использования с линуховым клиентом лдапа, потому как с лдапом я не работал никогда
Рассылка поздравлений — через самбу, корпоративный жаббер, почту...
kochetkov.vladimir однажды (02 июля 2008 [Среда] 13:06) писал в rsdn.flame.comp:
> Судя по последним постам Шеридана в различных топиках, день его очередной бани — не за горами, посему поспешу продолжить баттл, пока он еще тут:
Неправда, я хороший
Здравствуйте, Sheridan, Вы писали:
S>kochetkov.vladimir однажды (02 июля 2008 [Среда] 13:06) писал в rsdn.flame.comp:
>> Имея доступ к каталогу (LDAP), содержащему списки пользователей и компьютеров, но не хранящему информацию о поле пользователей, обеспечить на всех компьютерах сети, вывод на >> экран поздравления с 8-ым марта в момент интерактивного входа пользователя женского пола. S>Думаю задача сведется к копипасту (+ небольшая переделка) твоего решения для использования с линуховым клиентом лдапа, потому как с лдапом я не работал никогда S>Рассылка поздравлений — через самбу, корпоративный жаббер, почту...
Не-не-не. Поздравление — суть красивая открытка, выполненная в виде бинарника и проигрывающаяся всем женщинам при входе в систему на любом компьютере, в т.ч. и 9,10,11 и т.п. марта всем, кто ее еще не видел
kochetkov.vladimir однажды (02 июля 2008 [Среда] 13:33) писал в rsdn.flame.comp:
> Не-не-не. Поздравление — суть красивая открытка, выполненная в виде бинарника и проигрывающаяся всем женщинам при входе в систему на любом компьютере, в т.ч. и 9,10,11 и > т.п. марта всем, кто ее еще не видел
На почтовый ящик придет письмо в html с flash'кой. Рассылка один раз, например 8го числа в час ночи.
Прочтут как увидят, хоть через 8 лет сразу 8 поздравлений прочтут
Эффект тотже, средства другие
--
...belive in the matrix...
Здравствуйте, Sheridan, Вы писали:
S>Эффект тотже, средства другие
Слушай, если бы я в ответ на твою задачу о выключении монитора выдал:
echo "Пожалуйста, выключите монитор!"
это прокатило бы?
В общем случае — выполнение какого-либо бинарника / скрипта / команд на удаленных компах, попадающих под определенное условие — довольно распространенная задача среднестатистического сисадмина. Поэтому — давай отталкиваться от нее
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Имея доступ к каталогу (LDAP), содержащему списки пользователей и компьютеров, но не хранящему информацию о поле пользователей, обеспечить на всех компьютерах сети, вывод на экран поздравления с 8-ым марта в момент интерактивного входа пользователя женского пола.
Если пол не хранится нигде, то никакая PowerShell тебя не спасет :-)
Одного не пойму: что это имеет общего с командной оболочкой?
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>В общем случае — выполнение какого-либо бинарника / скрипта / команд на удаленных компах, попадающих под определенное условие — довольно распространенная задача среднестатистического сисадмина. Поэтому — давай отталкиваться от нее ;)
Ладно, твой случай.
Нужно что-нибудь для LDAP: aptitude install lib*ldap*-perl<Tab>, aptitude install libnet-ldap-perl, man Net::LDAP.
Из примера в мане:
use Net::LDAP;
$ldap = Net::LDAP->new( 'ldap.bigfoot.com' ) or die"$@";
$mesg = $ldap->bind ; # an anonymous bind
$mesg = $ldap->search( # perform a search
base => "c=US",
filter => "(&(sn=Barr) (o=Texas Instruments))"
);
$mesg->code && die $mesg->error;
foreach $entry ($mesg->entries) { $entry->dump; }
$mesg = $ldap->unbind; # take down session
Положить скрипт в ~/.kde/Autostart, или в /etc/kderc, или в bashrc, или еще куда-нибудь, и сделать нужное действие — дело техники.
kochetkov.vladimir однажды (02 июля 2008 [Среда] 14:24) писал в rsdn.flame.comp:
> В общем случае — выполнение какого-либо бинарника / скрипта / команд на удаленных компах, попадающих под определенное условие — довольно распространенная задача > среднестатистического сисадмина. Поэтому — давай отталкиваться от нее
Согласен.
Ежели так, то мне проще будет перегенерировать .cmd файл, который исполняется у всех при логине.
То, о чем мы с тобой говорим сейчас — для тебя только виндовое, а для меня — кроссОСное решение. Хотябы потому как в качестве открытки ты предлагаеш exe'шник, который мне нужно доставить пользователь каким-либо образом.
Хотя спасибо что помог родить мысль о перегенерации logon скрипта, применю у себя обязательно
Здравствуйте, Roman Odaisky, Вы писали:
RO>Здравствуйте, kochetkov.vladimir, Вы писали:
KV>>Имея доступ к каталогу (LDAP), содержащему списки пользователей и компьютеров, но не хранящему информацию о поле пользователей, обеспечить на всех компьютерах сети, вывод на экран поздравления с 8-ым марта в момент интерактивного входа пользователя женского пола.
RO>Если пол не хранится нигде, то никакая PowerShell тебя не спасет
Уже спасло, т.к. пол хранится в полном имени пользователя
RO>Одного не пойму: что это имеет общего с командной оболочкой?
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Да? Хочешь сказать, что содержимое каталога легче и проще обрабатывать в виде plain-text, нежели в виде связного списка или хэш-таблицы?
Ну как правило обработка идет по мере чтения. Это раз.
Ну а второе — а perl -e это еще шелл ?
Здравствуйте, TK, Вы писали:
TK>Можно сделать задачку более реалистичной. например, обновление фотоархива. есть фотоаппарат (допустим какой-нибудь cannon ixus — как storage не монтируется) надо сравнить его содержимое с содержимым медиа сервера который, доступен в сети через UPnP.
Замечательно. Давай теперь еще спросим где проще создать нод символьного устройства в шелле или PS
За выделенное фотоаппарат можно на помойку, UPnP кроме MS'а так никто и не признал, ибо не нужно (банально есть более развитое SLP). Так что задача в корне не корректна.
Ну а ImageMagick один фиг уделает по возможностям то, что встроено в PS.
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Здравствуйте, Sheridan, Вы писали:
S>>Лезеш в ядро, ищеш исходник драйвера видеокарточки, открываеш в редакторе и правиш в нужную сторону
KV>А мне что делать? Нет, я серьезно... У меня вот на ноуте PCMCIA EDGE-модем в линуксе глючит, я уже писал об этом. Навыков программирования драйверов под линукс — у меня нет, тема — слишком серьезная для меня как для непрограммера, чтобы заняться ее изучением ради настройки модема. Что делать-то?
Напиши в саппорт этой фирмы, что вы уроды и я ваш модем выкину на помойку, ибо он в линуксе не работает. Потом купи нормальный
Здравствуйте, Sheridan, Вы писали:
S>Roman Odaisky однажды (26 июня 2008 00:03) писал в rsdn.flame.comp:
>> Но это же совсем ничего не говорит о предмете обсуждения. S>Сама возможность начудить подобное говорит о многом. S>Пусть это будет винапи или wsh — мне не важно, важна возможность.
Ну он это сделает wmic (в смысле при помощи WMI консоли, команда wmic).
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Но увы и ах — провайдера в общем случае нет. Поэтому пойдем вторым путем, предложенным Романом и воспользуемся WinAPI. Чуть расширим задачу: вызвать произвольную функцию из произвольной DLL, не против?
KV>Потратим немного времени на написание универсального "запускателя" нативных функций из dll'ек:
[скипнуто много кода]
KV>Писать пришлось много, таки-да. Зато у нас теперь в распоряжении — полноценный доступ не только к API всей системы, но и всех доступных для использования dll-библиотек из обычных скриптов, не дотягивающих до уровня bash
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Уже спасло, т.к. пол хранится в полном имени пользователя
Ну и какой критерий? Задача банальна, если вот без этого функционала...
Только правильно написали — тут все сводится к ldapsearch с нужными параметрами, возможно ldapmodify. Запуск через логон скрипт — его положить для нужной GPO прямо на SYSVOL, дальше дело техники (ну возможно еще что-то надо в самом объекте политики поменять) — тут основная сложность, что под линуксом (очевидным образом) нет готового инструмента для работы с GPO.
Здравствуйте, DOOM, Вы писали:
DOO>ИМХО, в этой ситуации тебе хватило бы rundll32
Имхо — тоже, но я конкретно затрахался объяснять rundll32, что часть передаваемых параметров нужно передать по ссылке, а не по значению. В итоге оно так и не заработало, а проще и интереснее оказалось поковыряться с PS. Кстати, кусок кода для интеропа с dll — не мой если, что. Это я справедливости ради
Здравствуйте, DOOM, Вы писали:
RO>>Сюда же: можно ли выполнять команды PS на разных машинах? DOO>Точно да. Причем PS даже не должен быть установлен на целевой машине ;)
Здравствуйте, DOOM, Вы писали:
DOO>Напиши в саппорт этой фирмы, что вы уроды и я ваш модем выкину на помойку, ибо он в линуксе не работает. Потом купи нормальный
Здравствуйте, Roman Odaisky, Вы писали:
RO>Здравствуйте, DOOM, Вы писали:
RO>>>Сюда же: можно ли выполнять команды PS на разных машинах? DOO>>Точно да. Причем PS даже не должен быть установлен на целевой машине
RO>А на что это похоже?
Здравствуйте, Тамбовский Волк, Вы писали:
ТВ>Здравствуйте, DOOM, Вы писали:
DOO>>Напиши в саппорт этой фирмы, что вы уроды и я ваш модем выкину на помойку, ибо он в линуксе не работает. Потом купи нормальный
ТВ>Деньги-то фирма уже получила.
Один фиг задумаются... Просто так что ли за последние 10 лет ситуация с драйверами для линукс от производителей в корне изменилась
Здравствуйте, DOOM, Вы писали:
DOO>Здравствуйте, kochetkov.vladimir, Вы писали:
KV>>Уже спасло, т.к. пол хранится в полном имени пользователя DOO>Ну и какой критерий? Задача банальна, если вот без этого функционала...
Здравствуйте, Roman Odaisky, Вы писали:
RO>Просто интересно.
RO>Как в PS скопировать файл с одного компьютера на другой? Компьютеры не очень далеко друг от друга, но далеко от тебя.
copy "\\computer1\c$\temp" "\\computer2\c$\temp"
RO>Сюда же: можно ли выполнять команды PS на разных машинах? Как юниксовое command1 | ssh host command2 | command3.
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Здравствуйте, DOOM, Вы писали:
DOO>>Здравствуйте, kochetkov.vladimir, Вы писали:
KV>>>Уже спасло, т.к. пол хранится в полном имени пользователя DOO>>Ну и какой критерий? Задача банальна, если вот без этого функционала...
KV>Критерий чего?
Пола, чего еще — каков был у тебя критерий, чтобы по имени определить пол? Окончания -а -я? Или что-то более сложное?
Здравствуйте, kochetkov.vladimir, Вы писали:
RO>>Как в PS скопировать файл с одного компьютера на другой? Компьютеры не очень далеко друг от друга, но далеко от тебя.
KV>
Так файл будет копироваться через тебя — это неправильно.
Роман интересовался каким-нибудь аналогом ncopy (команда Novell Client'а, которая позволяет как раз копировать с сервера на сервер).
Здравствуйте, DOOM, Вы писали:
KV>>Критерий чего? DOO>Пола, чего еще — каков был у тебя критерий, чтобы по имени определить пол? Окончания -а -я? Или что-то более сложное?
Здравствуйте, DOOM, Вы писали:
DOO>Так файл будет копироваться через тебя — это неправильно. DOO>Роман интересовался каким-нибудь аналогом ncopy (команда Novell Client'а, которая позволяет как раз копировать с сервера на сервер).
Я не сразу въехал, что имеют место три компа. Ну тогда — через powershell'овский ремотинг, наверное — проще всего:
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Здравствуйте, DOOM, Вы писали:
KV>>>Критерий чего? DOO>>Пола, чего еще — каков был у тебя критерий, чтобы по имени определить пол? Окончания -а -я? Или что-то более сложное?
KV>Более простое... Словарики мужских и женских имен
Здравствуйте, kochetkov.vladimir, Вы писали:
DOO>>Так файл будет копироваться через тебя — это неправильно. KV>Я не сразу въехал, что имеют место три компа. Ну тогда — через powershell'овский ремотинг, наверное — проще всего:
KV>
А как при этом производится аутентификация и авторизация? Все три компьютера должны быть в одном домене?
Кстати, нахрена этот доллар? Я б еще понял, если бы это было \\computername\HareKrishnaHareKrishnaKrishnaKrishnaHareHareHareRamaHareRamaRamaRamaHareHare$, а так — кулхацкер первым делом попробует c$, d$ и прочие подобные имена.
DOO>>Роман интересовался каким-нибудь аналогом ncopy (команда Novell Client'а, которая позволяет как раз копировать с сервера на сервер).
Скорее аналогом обыкновенной scp (scp host1:/path/1host2:/path/2), которая авторизуется на первом сервере, а оттуда форвардит ssh-agent на второй и авторизуется там, и копирует данные напрямую. Или через GSSAPI ходит за билетами Kerberos, я как-то пробовал, но не осилил.
Здравствуйте, Roman Odaisky, Вы писали:
RO>А как при этом производится аутентификация и авторизация? Все три компьютера должны быть в одном домене?
Ну либо так, либо предварительно придется создать соединение с целевыми компьютерами (если пароли везде разные), например, с ресурсом IPC$.
RO>Кстати, нахрена этот доллар? Я б еще понял, если бы это было \\computername\HareKrishnaHareKrishnaKrishnaKrishnaHareHareHareRamaHareRamaRamaRamaHareHare$, а так — кулхацкер первым делом попробует c$, d$ и прочие подобные имена.
Это для того же, для чего и скрытые файлы — чтобы пользователя не смущать (между прочим, кулхацкер просто посмотрит ресурсы альтернативным клиентом, который ему отобразит, в том числе, скрытые ресурсы).
RO>Скорее аналогом обыкновенной scp (scp host1:/path/1host2:/path/2), которая авторизуется на первом сервере, а оттуда форвардит ssh-agent на второй и авторизуется там, и копирует данные напрямую.
да это одна фигня примерно.
RO>Или через GSSAPI ходит за билетами Kerberos, я как-то пробовал, но не осилил.
НИчего сложного — но аналогично компам в одном домене.
В одном домене им быть не обязательно. Если необходимо, авторизацию на computer1 можно отдельно организовать в самом теле удаленной команды.
RO>Кстати, нахрена этот доллар? Я б еще понял, если бы это было \\computername\HareKrishnaHareKrishnaKrishnaKrishnaHareHareHareRamaHareRamaRamaRamaHareHare$, а так — кулхацкер первым делом попробует c$, d$ и прочие подобные имена.
Это не для безопасности(скрытые шары легко перечисляются), а для удобства — чтоб рядовым пользователям глаза не мозолили.
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Не-не-не. Поздравление — суть красивая открытка, выполненная в виде бинарника и проигрывающаяся всем женщинам при входе в систему на любом компьютере, в т.ч. и 9,10,11 и т.п. марта всем, кто ее еще не видел
А если женщима входит на компутер телнетом, куда ее проигрывать, эту картинку? ASCII art'ом?
Здравствуйте, Pzz, Вы писали:
Pzz>Здравствуйте, kochetkov.vladimir, Вы писали:
KV>>Не-не-не. Поздравление — суть красивая открытка, выполненная в виде бинарника и проигрывающаяся всем женщинам при входе в систему на любом компьютере, в т.ч. и 9,10,11 и т.п. марта всем, кто ее еще не видел
Pzz>А если женщима входит на компутер телнетом, куда ее проигрывать, эту картинку? ASCII art'ом?
Спасибо, порадовал. Женщина входит телнетом
Я так и вижу как блондинка-секретарша старательно стучит по клаве т.к. очень длинные ногти
_d_m_ однажды (04 июля 2008 [Пятница] 12:16) писал в rsdn.flame.comp:
>>> А "Саша" — это вообще-то "Александра" > S>У меня есть сотрудница Ани > Симпатичная?
Женатый я
_d_m_ однажды (04 июля 2008 [Пятница] 12:13) писал в rsdn.flame.comp:
> Спасибо, порадовал. Женщина входит телнетом > Я так и вижу как блондинка-секретарша старательно стучит по клаве т.к. очень длинные ногти
Пенсионный фонд. Часть задач выполняется на as/400. Ткда только телнет. И ниче...
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Предлагаю баттл. Каждый нечетный раунд — мой, каждый четный — твой. "Хозяин" раунда озвучивает задачу, решенную им с помощью одного из сабжевых средств и представляет, собственно — решение. Второй — решает эту же задачу с помощью своего средства. Остальные — оценивают каждое из сообщений (1,2,3). Играем 10 раундов, каждый ведет по 5. По результатам — сложим оценки и определим победителя. Готов?
Не для баттла, но может, скажешь, как? Задача тупая, но реальная(и не решенная до сих пор).
Итак, 2 монитора. Нужно запустить приложение на втором мониторе(потом оно само развернет себя на весь экран и уберет декорации окна, нужно просто сделать, чтобы верхняя левая граница окна при запуске приложения была в координатах 2 монитора).
В линухе, так как мониторы можно настроить dual head, просто пишем
export DISPLAY=":0.1"
# да это, мать его, флеш
flashplayer $movie
На самом деле в живой задаче код чуть сложнее, но затык именно с запуском флеша на фуллскрин на втором мониторе. Ни на рсдн, ни на других ресурсах, мне так и не сказали, как это сделать в винде по-человечески(варианты с демонм, отслеживающим окошки по заголовку, и перетаскивающим их на второй моник в топку сразу).
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, _d_m_, Вы писали:
___> ___>Спасибо, порадовал. Женщина входит телнетом ___>Я так и вижу как блондинка-секретарша старательно стучит по клаве т.к. очень длинные ногти
Я знаю девушку, которая написала эмулятор системы команд 80x86 для одной из популярных на рынке виртуальных машин.
И знаю другую девущку, которая препарирует вирусы для одной из антивирусных компаний, входящих в число усшешных и популярных.
Здравствуйте, Roman Odaisky, Вы писали:
RO>Короче, zsh дополняет всё по Tab. Т. е., совсем всё, включая ключи популярных программ.
Кстати, в bash это тоже есть, и настраивается не очень сложно, по крайней мере мы без zsh (нету его у нас на работе) прекрасно обходимся, и на все проги, которые мы написали, мы встроили соответствующие авторасширялки для их опций.
Здравствуйте, DOOM, Вы писали:
DOO>Здравствуйте, kochetkov.vladimir, Вы писали:
KV>>Путь можно было бы пролистывать "C:<Tab-Tab-Tab...>", DOO>Вот эта особенность автодополнялки от винды сильно раздражает...
DOO>А в остальном — чтобы получить что-то типа PS под линуксом, надо видимо сделать шеллом perl или python — один-в-один будет
а зачем, если их можно из bash-а звать?
у меня вот редкая цепочка команд обходится без sed/awk/cut/perl
Здравствуйте, Sheridan, Вы писали:
S>_d_m_ однажды (04 июля 2008 [Пятница] 12:16) писал в rsdn.flame.comp:
>>>> А "Саша" — это вообще-то "Александра" >> S>У меня есть сотрудница Ани >> Симпатичная? S>Женатый я
Здравствуйте, jazzer, Вы писали:
J>а зачем, если их можно из bash-а звать? J>у меня вот редкая цепочка команд обходится без sed/awk/cut/perl
Я думаю, что использование perl -e в данном споре не будет засчитано. Поэтому и написал о полной замене шелла. Так-то понятно, что и -e хватает за глаза.
Здравствуйте, jazzer, Вы писали:
J>Здравствуйте, Roman Odaisky, Вы писали:
RO>>Короче, zsh дополняет всё по Tab. Т. е., совсем всё, включая ключи популярных программ.
J>Кстати, в bash это тоже есть, и настраивается не очень сложно
Согласен. В Debian'е, например, все это ледит в /etc/bash_competitions — сурсишь этот файл и красота.
Здравствуйте, Roman Odaisky, Вы писали:
RO>Ну вот, а могла бы превратить это в «C:\WINDOWS\System32\drivers\etc».
эээ... простите. А почему винда должна на Ц стоять вообще ? Столько постов про C:\w\s\d\e, а оказывается был рассчёт на диск Ц. Бедный я бедный, ведь у меня и диска Ц то вообще нету....
Здравствуйте, IID, Вы писали:
RO>>Ну вот, а могла бы превратить это в «C:\WINDOWS\System32\drivers\etc». IID>эээ... простите. А почему винда должна на Ц стоять вообще ? Столько постов про C:\w\s\d\e, а оказывается был рассчёт на диск Ц. Бедный я бедный, ведь у меня и диска Ц то вообще нету....
Так это тем более недостаток. При соблюдении FHS одни и те же вещи лежат в одних и тех же местах. Например, чтобы посмотреть на дефолтный конфиг веб-сервера, я наберу «view /e/n/s-a/d», нажму Tab и Enter и в просмотрщике откроется файл /etc/nginx/sites-available/default. Как в PowerShell быстро получить доступ к файлу hosts, особенно при описанном тобой осложнении? Кстати, PowerShell продолжает названия переменных окружения (например, $W<Tab>)?
Я это к тому, что для удобного интерактивного использования PS еще пилить и пилить, и для скриптов пользы от него не особенно много (есть же WSH).
— выведет в output содержимое hosts.
RO>Кстати, PowerShell продолжает названия переменных окружения (например, $W<Tab>)?
Да, продолжает. Но в posh'e нет понятий "переменные окружения", "файловая система", "реестр" и т.п. Есть понятие "провайдер". Из коробки с posh'ем идут в т.ч. провайдеры для переменных окружения (см. выше "$env:"), файловой системы, ресстра и другие. Можно добавлять свои, если не хватает. Я это к тому, что posh'у пофиг чего автодополнять, путь к файлу, переменную окружения, ветку реестра и т.п. Он просто дергает по tab'у нужный метод интерфейса нужного провайдера и все.
RO>Я это к тому, что для удобного интерактивного использования PS еще пилить и пилить, и для скриптов пользы от него не особенно много (есть же WSH).
А если поставить к posh'у еще и powertab (расширение консоли), то он будет автодополнять все, что только возможно, включая поля методы и свойства .NET классов, . Правда с C:\W\S\D\e работать не умеет, но такое поведения при желании можно и добавить, т.к. расширение открытое и само на posh'e написано.
Здравствуйте, kochetkov.vladimir, Вы писали:
RO>>Как в PowerShell быстро получить доступ к файлу hosts, особенно при описанном тобой осложнении? KV>select-string ".*" $env:SystemRoot\System32\Drivers\etc\hosts KV>- выведет в output содержимое hosts.
Под «быстро» я понимал «с наименьшим количеством нажатий клавиш».
Здравствуйте, Roman Odaisky, Вы писали:
RO>Здравствуйте, kochetkov.vladimir, Вы писали:
RO>>>Как в PowerShell быстро получить доступ к файлу hosts, особенно при описанном тобой осложнении? KV>>select-string ".*" $env:SystemRoot\System32\Drivers\etc\hosts KV>>- выведет в output содержимое hosts.
RO>Под «быстро» я понимал «с наименьшим количеством нажатий клавиш».
sel<TAB>-s<TAB> "*." $env:sy<TAB-TAB>\S
дальше уже разница — стандартная posh'евая консоль далее не может дополнять путь по табу, консоль с powertab — может. Powertab при этом (как zsh) выводит табличку с возможными вариантами следующего дополнения (по ней тоже можно ходить стрелками).
RO>А зачем select-string? Там есть какой-нибудь cat?
Да, есть:
cat $env:SystemRoot\System32\Drivers\etc\hosts
это alias к Get-Content. Предыдущий пример я выдрал из одного своего скрипта, там требовалась построчная обработка.
У меня, на самом деле, давно есть сильное желание собрать все недостающие интерактивные фичи zsh и прикрутить их к posh'у.
RO>Никого не смущает, что CreateProcess имеет в общей сложности 35 параметров, в то время как fork — 0, а exec — 3 (имя, аргументы, окружение)?
IID>>Вижу только четыре (4!) обязательных параметра. Из которых только три входных, ну да неважно. Ещё 6 опциональных. Но, даже если их сложить вместе, как-то далеко до 35 получается F>Структуры посмотри, что там есть и что вообще можно с ним сделать. Хотя думаю ты это и так знаешь, и просто наглая провокация.
Посмотрел. И что я должен увидеть ? И причём тут вообще структуры, смотрим внимательно выделенное. Одайский чётко озвучил количество параметров. Где же они ?
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Предлагаю баттл. Каждый нечетный раунд — мой, каждый четный — твой. "Хозяин" раунда озвучивает задачу, решенную им с помощью одного из сабжевых средств и представляет, собственно — решение. Второй — решает эту же задачу с помощью своего средства. Остальные — оценивают каждое из сообщений (1,2,3). Играем 10 раундов, каждый ведет по 5. По результатам — сложим оценки и определим победителя. Готов?
Ну это скорее всего не сложно , но все же. Просто интересно как это будет выглядить без winrar.exe
и какая инфраструктура потребуется для повторения usecase:
$ make
$ setup.exe octo47@myserver.ru
Password: *****
$ ssh octo47@myserer.ru
Last login: Mon Jan 26 22:55:20 2009
Have a lot of fun...
(myserver.ru)$
Сей набор (Makefile + scripts/header.sh) — это самораспаковывающийся инсталятор окружения на удаленной машине.
Makefile (хотя можно сделать и шелом, ибо в makefile просто команды шела) создает скрипт setup.sh, который копирует себя
на удаленноу машину и там распакоывается.
ЗЫ: winrar — не часть ps, т.к. не является частью ос)
Здравствуйте, octo47, Вы писали:
O>Здравствуйте, kochetkov.vladimir, Вы писали:
KV>>Предлагаю баттл. Каждый нечетный раунд — мой, каждый четный — твой. "Хозяин" раунда озвучивает задачу, решенную им с помощью одного из сабжевых средств и представляет, собственно — решение. Второй — решает эту же задачу с помощью своего средства. Остальные — оценивают каждое из сообщений (1,2,3). Играем 10 раундов, каждый ведет по 5. По результатам — сложим оценки и определим победителя. Готов?
O>Ну это скорее всего не сложно , но все же.
Я правильно понимаю, что если выразить задачу более абстрактно, то нужно с эталонной машины слить некие настройки из профиля эталонного пользователя и перенести их на удаленную машину?
O>Просто интересно как это будет выглядить без winrar.exe
А зачем тут именно winrar? В винде есть вполне стандартный makecab.exe, а в .NET (которая является неотъемлемой частью PS) — System.IO.Packaging в целом, и ZipPackage в частности
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Здравствуйте, octo47, Вы писали:
O>>Здравствуйте, kochetkov.vladimir, Вы писали:
KV>>>Предлагаю баттл. Каждый нечетный раунд — мой, каждый четный — твой. "Хозяин" раунда озвучивает задачу, решенную им с помощью одного из сабжевых средств и представляет, собственно — решение. Второй — решает эту же задачу с помощью своего средства. Остальные — оценивают каждое из сообщений (1,2,3). Играем 10 раундов, каждый ведет по 5. По результатам — сложим оценки и определим победителя. Готов?
O>>Ну это скорее всего не сложно , но все же.
KV>Я правильно понимаю, что если выразить задачу более абстрактно, то нужно с эталонной машины слить некие настройки из профиля эталонного пользователя и перенести их на удаленную машину?
Не совсем. В общем случае настройки моей рабочей станции имеют мало общего с серверными настройками.
O>>Просто интересно как это будет выглядить без winrar.exe
KV>А зачем тут именно winrar? В винде есть вполне стандартный makecab.exe, а в .NET (которая является неотъемлемой частью PS) — System.IO.Packaging в целом, и ZipPackage в частности
Я про самораспаковывающийся шелл-скрипт (на PS).
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Здравствуйте, octo47, Вы писали:
KV>>>Я правильно понимаю, что если выразить задачу более абстрактно, то нужно с эталонной машины слить некие настройки из профиля эталонного пользователя и перенести их на удаленную машину? O>>Не совсем. В общем случае настройки моей рабочей станции имеют мало общего с серверными настройками.
KV>Тогда зачем? Я просто не совсем себе представляю способ применения этого на винде Юникс-вэем попахивает
Да в общем-то PS — это тоже в общем-то unix-way ага. Но на винде бывает надо, у меня виртуалок много, вот и подумалось, как бы это выглядело
O>>>>Просто интересно как это будет выглядить без winrar.exe KV>>>А зачем тут именно winrar? В винде есть вполне стандартный makecab.exe, а в .NET (которая является неотъемлемой частью PS) — System.IO.Packaging в целом, и ZipPackage в частности O>>Я про самораспаковывающийся шелл-скрипт (на PS).
KV>Времени нет, но вот proof-of-concept (ps-скрипт, содержащий в себе зазипованный notepad.exe, который его из себя извлекает, распаковывает и запускает. используются только стандартные средства XP и .NET 2.0 и выше):
Вах интересно. Только вот лучше тогда уж в base64. Ибо @' уж больно короткий
Здравствуйте, octo47, Вы писали:
KV>>Тогда зачем? Я просто не совсем себе представляю способ применения этого на винде Юникс-вэем попахивает O>Да в общем-то PS — это тоже в общем-то unix-way ага. Но на винде бывает надо, у меня виртуалок много, вот и подумалось, как бы это выглядело
У меня на виртуалках это выглядит так: Deploy VM from template -> Use VM Customiztion Wizard, а дальше ответ на ряд вопросов визарда или выбор сохраненной конфигурации, где только и надо, например, что задать IP и имя компьютера
А вообще есть достаточное количество инструментария для deploy'я виндовых серверов, так что такая задача все-таки странновата...
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Времени нет, но вот proof-of-concept (ps-скрипт, содержащий в себе зазипованный notepad.exe, который его из себя извлекает, распаковывает и запускает. используются только стандартные средства XP и .NET 2.0 и выше):
Получится шелловый скрипт (test.run), который извлечет из себя файл, проверит хеш (а твой скрипт проверяет хеш?), запустит извлеченный файл, уберет за собой.
Здравствуйте, octo47, Вы писали:
O>Ну это скорее всего не сложно :), но все же. Просто интересно как это будет выглядить без winrar.exe :) O>и какая инфраструктура потребуется для повторения usecase: O>
O>$ make
O>$ setup.exe octo47@myserver.ru
O>Password: *****
O>$ ssh octo47@myserer.ru
O>Last login: Mon Jan 26 22:55:20 2009
O>Have a lot of fun...
O>(myserver.ru)$
O>
Смотрю я, смотрю, и никак не пойму, какая здесь нужна инфраструктура помимо scp -C.
Здравствуйте, DOOM, Вы писали:
DOO>Здравствуйте, octo47, Вы писали:
KV>>>Тогда зачем? Я просто не совсем себе представляю способ применения этого на винде Юникс-вэем попахивает O>>Да в общем-то PS — это тоже в общем-то unix-way ага. Но на винде бывает надо, у меня виртуалок много, вот и подумалось, как бы это выглядело DOO>У меня на виртуалках это выглядит так: Deploy VM from template -> Use VM Customiztion Wizard, а дальше ответ на ряд вопросов визарда или выбор сохраненной конфигурации, где только и надо, например, что задать IP и имя компьютера
Не , у меня:
1. юниксовые
2. не я их настраиваю обычно.
DOO>А вообще есть достаточное количество инструментария для deploy'я виндовых серверов, так что такая задача все-таки странновата...
ну тут весь топик странноват . сравнивать .Net (который все таки для программиста) и инструментарий unix выработанный годами для работы не программистов (админов) использующий простейшую аки столб вещь — конвеер .
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Здравствуйте, octo47, Вы писали:
KV>>>Я правильно понимаю, что если выразить задачу более абстрактно, то нужно с эталонной машины слить некие настройки из профиля эталонного пользователя и перенести их на удаленную машину? O>>Не совсем. В общем случае настройки моей рабочей станции имеют мало общего с серверными настройками.
KV>Тогда зачем? Я просто не совсем себе представляю способ применения этого на винде Юникс-вэем попахивает
Вот подумал я тут — данный пример хорошо показывает гениальность unix утилит и идеи конвеера в данных задачах, чем зоопарк .Net (Java, Python, Ruby).
1. Простая концепция близкая к ФП — все есть функция (фильтр, конвеер), например base64 — это элементарно, в твоем случае — не очень , и что характерно каждый такой дополнительный функционал — гимор.
2. Шаги bash, выполняемые утилитами (awk, sed, tail) проверяются отдельно и обычно не имеют побочных эффектов (исключение наверное только для >> )
3. Для понимания этого скрипта нет необходимости знать что такое Byte[] New-Object как его сделать delete , и вообще что такое память массив и, о ужас, GC.
4. Когда ты захочешь не умереть от нехватки памяти (например если аттач 500Мб на 128Мб машине), то тебе придется думать, а админы не любят думать . По этому у меня работает конструкция pg_dump -s schema1 -s schema2 | gzip > dump.gz для базы в 30Гб, а у тебя это не сработает. Придется мудрить с while(read < total) { readToBuffer; writerToFile; }.
А вообще сравнивать PS надо с python/perl/Java(groovy,scala,bsh...). Ибо удобство использования PS _не програмиистом_ не совсем очевидно.
Здравствуйте, octo47, Вы писали:
O>Здравствуйте, kochetkov.vladimir, Вы писали:
O>4. Когда ты захочешь не умереть от нехватки памяти (например если аттач 500Мб на 128Мб машине), то тебе придется думать, а админы не любят думать . По этому у меня работает конструкция pg_dump -s schema1 -s schema2 | gzip > dump.gz для базы в 30Гб, а у тебя это не сработает. Придется мудрить с while(read < total) { readToBuffer; writerToFile; }.
Здравствуйте, Roman Odaisky, Вы писали:
RO>Здравствуйте, octo47, Вы писали:
RO>Смотрю я, смотрю, и никак не пойму, какая здесь нужна инфраструктура помимо scp -C.
Не задумывался. Оно вроде раньше еще apt-get install zsh запускало .
А вообще как-то лет 8 назад хотелось написать распаковывающийся sh. Написал. До сих пор использую
Здравствуйте, Roman Odaisky, Вы писали:
RO>Здравствуйте, kochetkov.vladimir, Вы писали:
KV>>Времени нет, но вот proof-of-concept (ps-скрипт, содержащий в себе зазипованный notepad.exe, который его из себя извлекает, распаковывает и запускает. используются только стандартные средства XP и .NET 2.0 и выше):
RO>OMG.
RO>
RO>sudo aptitude install makeself
Угу. А теперь плс то же самое, но без этой строчки. И посмотрим, какое OMG получится у тебя ;)
RO>mkdir contents
RO>cp /usr/bin/xeyes contents
RO>makeself contents test.run "makeself test" ./xeyes
RO>
RO>Получится шелловый скрипт (test.run), который извлечет из себя файл, проверит хеш (а твой скрипт проверяет хеш?), запустит извлеченный файл, уберет за собой.
Мне написать на PS командлет Make-Self, который делает тоже самое, практически с идентичным синтаксисом, или на слово поверишь?
Здравствуйте, octo47, Вы писали:
KV>>Тогда зачем? Я просто не совсем себе представляю способ применения этого на винде Юникс-вэем попахивает
O>Вот подумал я тут — данный пример хорошо показывает гениальность unix утилит и идеи конвеера в данных задачах, чем зоопарк .Net (Java, Python, Ruby).
Долго думал над выделенным...
O>3. Для понимания этого скрипта нет необходимости знать что такое Byte[] New-Object как его сделать delete , и вообще что такое память массив и, о ужас, GC.
Если выбирать между программистом и админом, то я скорее админ, причем бывший Тут я лажанул, хотел написать так, что местным программерам понятнее было + не было времени на прояснение пары вопросов, чтобы написать в true-posh стиле posh вполне позволяет использовать и конвейерно-"функциональный" стиль:
Знать scritable COM-объекты виндового shell'a нормальный винадмин просто обязан. Ибо других путей эффективно админить эту систему без wsh до posh просто не было.
А кусок, забирающий файл, ищущий метку и сливающий вложение в другой файл, вполне можно выразить без использования .NET'а вообще, через конструкцию типа:
Как я уже сказал, просто не хватило времени разобраться с особенностями парсинга бинарных файлов средствами posh. Поэтому незнание этих особенностей компенсировал реализацией тупо, в лоб, .NET'ом.
O>4. Когда ты захочешь не умереть от нехватки памяти (например если аттач 500Мб на 128Мб машине), то тебе придется думать, а админы не любят думать . По этому у меня работает конструкция pg_dump -s schema1 -s schema2 | gzip > dump.gz для базы в 30Гб, а у тебя это не сработает. Придется мудрить с while(read < total) { readToBuffer; writerToFile; }.
Сработает, причем один-в-один, и мудрить не придется
O>А вообще сравнивать PS надо с python/perl/Java(groovy,scala,bsh...). Ибо удобство использования PS _не програмиистом_ не совсем очевидно.
PS — не язык. Просто до него на винде не было полноценных средств администрирования, которые бы позволяли так гибко использовать средства своего синтаксиса. Posh позволяет использовать как привычный админам стиль конвейеров, так и построчную императивщину с использованием всех возможностей .NET. Первый вариант — тру вей для написания скриптов posh, второй — для его командлетов.
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Здравствуйте, octo47, Вы писали:
O>>Вот подумал я тут — данный пример хорошо показывает гениальность unix утилит и идеи конвеера в данных задачах, чем зоопарк .Net (Java, Python, Ruby). KV>Долго думал над выделенным...
Читать как .Net или Java или Python или Ruby. Ибо под каждым из них есть что-то подобное PS.
O>>3. Для понимания этого скрипта нет необходимости знать что такое Byte[] New-Object как его сделать delete , и вообще что такое память массив и, о ужас, GC.
KV>Если выбирать между программистом и админом, то я скорее админ, причем бывший Тут я лажанул, хотел написать так, что местным программерам понятнее было + не было времени на прояснение пары вопросов, чтобы написать в true-posh стиле posh вполне позволяет использовать и конвейерно-"функциональный" стиль:
KV>
for i in `ls *.txt`; do
cat "$i" | gzip | gpg --encrypt --recipient xxxxx@gmail.com - > "$i".gz.enc && wipe "$i"
&& echo "Catch your file, man\!" | mail -s test -a "$i".gz.enc xxxxx@gmail.com
done;
O>>4. Когда ты захочешь не умереть от нехватки памяти (например если аттач 500Мб на 128Мб машине), то тебе придется думать, а админы не любят думать . По этому у меня работает конструкция pg_dump -s schema1 -s schema2 | gzip > dump.gz для базы в 30Гб, а у тебя это не сработает. Придется мудрить с while(read < total) { readToBuffer; writerToFile; }.
KV>Сработает, причем один-в-один, и мудрить не придется
??? Я как-то не так понял этот кусок кода?
KV>PS — не язык. Просто до него на винде не было полноценных средств администрирования, которые бы позволяли так гибко использовать средства своего синтаксиса. Posh позволяет использовать как привычный админам стиль конвейеров, так и построчную императивщину с использованием всех возможностей .NET. Первый вариант — тру вей для написания скриптов posh, второй — для его командлетов.
Я и не говорил, что это язык. Это инструмент, который требует знания языка и платформы .Net
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Угу. А теперь плс то же самое, но без этой строчки. И посмотрим, какое OMG получится у тебя ;) KV>Мне написать на PS командлет Make-Self, который делает тоже самое, практически с идентичным синтаксисом, или на слово поверишь? ;)
Здравствуйте, kochetkov.vladimir, Вы писали:
O>>Поэтому у меня работает конструкция pg_dump -s schema1 -s schema2 | gzip > dump.gz для базы в 30Гб, а у тебя это не сработает. KV>Сработает, причем один-в-один, и мудрить не придется ;)
Я что-то пропустил? В майкрософтовских ОС уже есть /bin/gzip?
(Кстати, знаете-ли-вы-что: GNU tar поддерживает LZMA из коробки, ключ -J)
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Будем-будем. Вот поработаем чуть-чуть и будем баттлиться
клёва, давайте быстрее работайте
KV>WTF busybox http://www.busybox.net/ — прога типа allinone, инструмент конечна сильно специфический (хотя присутствуем практически в любом девайсе, которым рулит линух)
KV> и "автономность"?
требуется для своей работы тока загруженое ядро линуха, все чё нужна внутри