Re: Раунд 2
От: Sheridan Россия  
Дата: 25.06.08 17:06
Оценка: 17 (6) :))) :))) :))) :))) :))) :)
kochetkov.vladimir однажды (25 июня 2008 19:34) писал в rsdn.flame.comp:

Монитор выключить сможеш?
xset -display :0 dpms force off


--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
2Sheridan: ну че, баттл? PS vs Bash...
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 25.06.08 15:34
Оценка: 1 (1) +4 -2 :))) :)))
Предлагаю баттл. Каждый нечетный раунд — мой, каждый четный — твой. "Хозяин" раунда озвучивает задачу, решенную им с помощью одного из сабжевых средств и представляет, собственно — решение. Второй — решает эту же задачу с помощью своего средства. Остальные — оценивают каждое из сообщений (1,2,3). Играем 10 раундов, каждый ведет по 5. По результатам — сложим оценки и определим победителя. Готов?

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[2]: Раунд 2
От: ДимДимыч Украина http://klug.org.ua
Дата: 25.06.08 18:23
Оценка: :))) :))) :)
Здравствуйте, Sheridan, Вы писали:

S>Монитор выключить сможеш?

S>
S>xset -display :0 dpms force off
S>


Sheridan, ниже пояса бить нельзя!
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Re[3]: Зачем нужно?
От: Sheridan Россия  
Дата: 26.06.08 11:24
Оценка: 8 (6)
kochetkov.vladimir однажды (26 июня 2008 [Четверг] 14:25) писал в rsdn.flame.comp:

> Честно говоря, не представляю себе — нахрена это может понадобиться, но — почему нет?


Ну у меня это вполне себе работает...
Вобщем скрипт пинает по bluetooth 2 мобилы, и ежели ни одна не отвечает, то отключает монитор, лочит станцию, гасит звук, плеер на паузу ставит, в мессенжерах статусы выставляет, пару сервисов стартует....
При обнаружении телефона соответственно все наоборот: анлок станции, включает монитор и так далее.
Подробнее, ежели кому интересно, — тут
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re: Мне стало понятно
От: Roman Odaisky Украина  
Дата: 26.06.08 15:32
Оценка: 1 (1) +5
Во-первых, спасибо Владимиру за примеры.

Вот что я понял. Что такое оболочка, она же 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# путем смены синтаксиса, добавления интерпретатора и интерактивного режима, цель чего избегает моего понимания.
До последнего не верил в пирамиду Лебедева.
Re: А вот задание для PS
От: Roman Odaisky Украина  
Дата: 25.06.08 21:08
Оценка: 7 (4)
Задача: отслеживать изменения в файловой системе. К примеру, всякий раз, как в некоей директории появляется файл, оповещать об этом пользователя.

bash:
while file="$(inotifywait -q -e create --format='%w/%f' /var/crash)"
do
    kdialog --msgbox "Something crashed and file $file was created."
done
До последнего не верил в пирамиду Лебедева.
Re[2]: А вот задание для PS
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 26.06.08 12:33
Оценка: 5 (4)
Здравствуйте, 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."
}



[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[2]: 2Sheridan: ну че, баттл? PS vs Bash...
От: Roman Odaisky Украина  
Дата: 27.06.08 10:06
Оценка: +1 :)))
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Шеридан, третий раунд играть будем, или и так — уже каждый свои выводы сделал и все понял? Если будем — закину условия задачи.


Лучше распей с Шериданом обещанный баттл, он тебе напишет драйвера для твоего модема, ты поставишь себе линукс, будешь здесь хвалить *sh и ругать PowerShell в частности и Майкрософт вообще, все будут счастливы, твоя компания станет сверхзащищена от всех вирусов и хакеров, на RSDN поменяются default city и default OS. Чего же ты хотел, виндекапец всё-таки.
До последнего не верил в пирамиду Лебедева.
Re[14]: Раунд 1.
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 27.06.08 09:50
Оценка: +3
Здравствуйте, Sheridan, Вы писали:

S>kochetkov.vladimir однажды (27 июня 2008 [Пятница] 13:39) писал в rsdn.flame.comp:


>> Нанять? Kernel-программера под linux? Разве что только если потом этот драйвер продавать, ибо иначе никак не окупится.

S>вот и я об чем и говорил ранее. В голове мысли только о бабле.

Шеридан, ты это... На досуге поинтересуйся — во сколько обойдется заказная разработка драйвера под закрытое устройство, прежде чем советовать такое, а потом рассуждать об алчности собеседника, ага?

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[17]: Раунд 1.
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 27.06.08 12:59
Оценка: :)))
Здравствуйте, Mamut, Вы писали:

M>Мне может быть анально неинтересно копаться в нелрах системы.


Во-во... И не говори. Как не пытаюсь линукс поставить, все время какая-то анальность во всем чувствуется. Причем совершенно непонятно — кто кого? Я думал, это только у меня, но теперь от души прям отлегло

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[4]: Мне стало понятно
От: IID Россия  
Дата: 27.01.09 04:12
Оценка: +1 -2
Здравствуйте, Roman Odaisky, Вы писали:

RO>Никого не смущает, что CreateProcess имеет в общей сложности 35 параметров, в то время как fork — 0, а exec — 3 (имя, аргументы, окружение)?


наглый, провокаторский пи#$%деж:
BOOL WINAPI CreateProcess(
  (1) __in_opt     LPCTSTR lpApplicationName,
  (2) __inout_opt  LPTSTR lpCommandLine,
  (3) __in_opt     LPSECURITY_ATTRIBUTES lpProcessAttributes,
  (4) __in_opt     LPSECURITY_ATTRIBUTES lpThreadAttributes,
  __in         BOOL bInheritHandles,
  __in         DWORD dwCreationFlags,
  (5) __in_opt     LPVOID lpEnvironment,
  (6) __in_opt     LPCTSTR lpCurrentDirectory,
  __in         LPSTARTUPINFO lpStartupInfo,
  __out        LPPROCESS_INFORMATION lpProcessInformation
);


Вижу только четыре (4!) обязательных параметра. Из которых только три входных, ну да неважно. Ещё 6 опциональных. Но, даже если их сложить вместе, как-то далеко до 35 получается
kalsarikännit
Re[5]: Мне стало понятно
От: fddima  
Дата: 27.01.09 07:05
Оценка: +2 -1
Здравствуйте, IID, Вы писали:

RO>>Никого не смущает, что CreateProcess имеет в общей сложности 35 параметров, в то время как fork — 0, а exec — 3 (имя, аргументы, окружение)?


IID>наглый, провокаторский пи#$%деж:

С таким в мусор.

IID>Вижу только четыре (4!) обязательных параметра. Из которых только три входных, ну да неважно. Ещё 6 опциональных. Но, даже если их сложить вместе, как-то далеко до 35 получается

Структуры посмотри, что там есть и что вообще можно с ним сделать. Хотя думаю ты это и так знаешь, и просто наглая провокация.
Re[2]: Раунд 2
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 26.06.08 10:25
Оценка: 3 (2)
Здравствуйте, 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 это выглядело бы так:

(gwmi -Class Win32_DesktopMonitor -ComputerName .)[0].InvokeMethod("SetPowerState", 6)


Но увы и ах — провайдера в общем случае нет. Поэтому пойдем вторым путем, предложенным Романом и воспользуемся WinAPI. Чуть расширим задачу: вызвать произвольную функцию из произвольной DLL, не против?

Потратим немного времени на написание универсального "запускателя" нативных функций из dll'ек:

function Invoke-Win32([string] $dllName, [Type] $returnType, 
   [string] $methodName, [Type[]] $parameterTypes, [Object[]] $parameters)
{
   $domain = [AppDomain]::CurrentDomain
   $name = New-Object Reflection.AssemblyName 'PInvokeAssembly'
   $assembly = $domain.DefineDynamicAssembly($name, 'Run')
   $module = $assembly.DefineDynamicModule('PInvokeModule')
   $type = $module.DefineType('PInvokeType', "Public,BeforeFieldInit")

   $inputParameters = @()
   $refParameters = @()
  
   for($counter = 1; $counter -le $parameterTypes.Length; $counter++)
   {
      if($parameterTypes[$counter - 1] -eq [Ref])
      {
         $refParameters += $counter

         $parameterTypes[$counter - 1] = 
            $parameters[$counter - 1].Value.GetType().MakeByRefType()
         $inputParameters += $parameters[$counter - 1].Value
      }
      else
      {
         $inputParameters += $parameters[$counter - 1]
      }
   }

   $method = $type.DefineMethod($methodName, 'Public,HideBySig,Static,PinvokeImpl', 
      $returnType, $parameterTypes)
   foreach($refParameter in $refParameters)
   {
      $method.DefineParameter($refParameter, "Out", $null)
   }

   $ctor = [Runtime.InteropServices.DllImportAttribute].GetConstructor([string])
   $attr = New-Object Reflection.Emit.CustomAttributeBuilder $ctor, $dllName
   $method.SetCustomAttribute($attr)

   $realType = $type.CreateType()
   $realType.InvokeMember($methodName, 'Public,Static,InvokeMethod', $null, $null, 
      $inputParameters)

   foreach($refParameter in $refParameters)
   {
      $parameters[$refParameter - 1].Value = $inputParameters[$refParameter - 1]
   }
}


Его можно оформить в виде отдельного сценария (либо в виде командлета в PS v2.0) для дальнейшего использования из любых скриптов. Затем: напишем обертку для SendMessage:


function SendMessage([IntPtr] $hWnd, [Int32] $message, [Int32] $wParam, [Int32] $lParam)
{
    $parameterTypes = [IntPtr], [Int32], [Int32], [Int32]
    $parameters = $hWnd, $message, $wParam, $lParam

    Invoke-Win32 "user32.dll" ([Int32]) "SendMessage" $parameterTypes $parameters
}


И воспользуемся ей:

SendMessage ([IntPtr] 0xffff) 274 61808 2 | out-null


Писать пришлось много, таки-да. Зато у нас теперь в распоряжении — полноценный доступ не только к API всей системы, но и всех доступных для использования dll-библиотек из обычных скриптов, не дотягивающих до уровня bash

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[2]: Раунд 1.
От: voidlizard  
Дата: 04.07.08 03:40
Оценка: 2 (2)
KV>
KV>$dir1 = Get-ChildItem -recurse "C:\Temp\1"
KV>$dir2 = Get-ChildItem -recurse "C:\Temp\2"
KV>Compare-Object $dir1 $dir2
KV>


баш фтопку.

ipython shell (pysh)

dir1 = !ls -1 -R /Users/dmz/Downloads/
dir2 = !ls -1 -R /Users/dmz/Documents/
set(dir1).difference(dir2)
Re[2]: Раунд 2
От: Roman Odaisky Украина  
Дата: 25.06.08 20:03
Оценка: 1 (1) +1
Здравствуйте, Sheridan, Вы писали:

S>Монитор выключить сможеш?

S>
S>xset -display :0 dpms force off
S>

Думаю, сможет. Всё, что для требуется для этого в WinAPI, — SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 2). Начудит что-нибудь через WMI.

Но это же совсем ничего не говорит о предмете обсуждения.
До последнего не верил в пирамиду Лебедева.
Re[7]: Раунд 2
От: vnp  
Дата: 27.06.08 06:00
Оценка: 1 (1) :)
Здравствуйте, 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, согласитесь, пишется тривиально.
Re[4]: Раунд 1.
От: Cyberax Марс  
Дата: 26.06.08 16:38
Оценка: +1 -1
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Ок, но это ничего не даст. Текст, который выводится в результате работы скриптов PS — является лишь одним из способов визуального представления возвращаемых командами объектов.

Только фича в том, что для типичных shell-скриптов ничего кроме текста особо и не нужно. А если нужно — то стоит уже явно написать это на чём-то типа Python.
Sapienti sat!
Re[10]: Раунд 1.
От: Antikrot  
Дата: 27.06.08 08:33
Оценка: +2
Здравствуйте, Sheridan, Вы писали:

S>Лезеш в ядро, ищеш исходник драйвера видеокарточки, открываеш в редакторе и правиш в нужную сторону до того момента, пока не покажется, что все что мог — сделал.

Покажи плиз место в ядре с *твоими* изменениями. Для примера, а то местные горе-программисты просто не знают что делать

S>Потом делаеш diff и отсылаеш в багтрак ядра.

S>Все довольны и тебе говорят спасибо.
Неее, сначала проверят, а уж потом спасибо

А как бы отнесся у юзерам (которых ты админишь), если б каждый себе по-своему ядро переделал? (да так, что у тебя потом какой-нить важный патч не накатится на него)?

И еще, такое подправленное ядро (да и не только ядро) ну нафиг не сгодится, когда напрограммированный на нем софт (раз уж ты на программистов наехал) вдруг будет падать у кастомера а у тебя не будет. Потому что твой традиционный аргумент "у меня работает. что я делаю не так?" сгодится разве что для приказа о твоем увольнении
Re[13]: Раунд 1.
От: Sheridan Россия  
Дата: 27.06.08 09:41
Оценка: -2
kochetkov.vladimir однажды (27 июня 2008 [Пятница] 13:39) писал в rsdn.flame.comp:

> Нанять? Kernel-программера под linux? Разве что только если потом этот драйвер продавать, ибо иначе никак не окупится.

вот и я об чем и говорил ранее. В голове мысли только о бабле.

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[18]: Раунд 1.
От: a_kutovets США  
Дата: 27.06.08 11:51
Оценка: +2
Здравствуйте, Sheridan, Вы писали:

S>a_kutovets однажды (27 июня 2008 [Пятница] 15:27) писал в rsdn.flame.comp:


>> з.ы. Шеридан, у меня давно вообще появились сомнения на счет твего семейного статуса. ты сколько за компами времени проводишь?

S>Ну на работе целый день, потом часов 2-5 гуляем с женой, потом домой и за компы. Ну поесть — кино посмотреть тоже конечно успеваем
S>У меня жена хоть и юрист, но тоже за компом много сидит

S>--

S>...belive in the matrix...

родите ребенка — все твои разглагольствования на тему, что нужно сидеть и лабать дрова под линукс в свободное время, а также обвинения в меркантильности просто отпадут. тебе самому будет смешно вспоминать, что ты такое говорил.

вообще, к чему я. Шеридан, мы все живем во взрослом мире. для того чтобы жить тебе, твоей семье достойно, нужно именно работать на дядьку/на рынок, а не сидеть ковыряться в линуксе.
й
Re[5]: Мне стало понятно
От: Roman Odaisky Украина  
Дата: 27.06.08 10:31
Оценка: 3 (1)
Здравствуйте, 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>Комфортнее всех, имевшихся ранее аналогов под виндой.


Попробуй в своей SuSE wget 'http://qwertty.com/sync/roma/.zshrc' && sudo apt-get install zsh. И просто нажимай Tab почаще.
До последнего не верил в пирамиду Лебедева.
Re[3]: Мне стало понятно
От: Roman Odaisky Украина  
Дата: 27.06.08 10:01
Оценка: 2 (1)
Здравствуйте, 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>Вындоус это система для тупых энд-юзеров вроде меня, а не для людей которые проводят в ОС все время


Энд-юзеру и в линуксе не обязательно рыться где-нибудь в глубинах. Могут возникнуть проблемы с аппаратным обеспечением, для решения понадобится один визит знакомого бородатого админа. А дальше всё и для простого юзера вполне прилично работает.
До последнего не верил в пирамиду Лебедева.
Re: Раунд 1.
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 25.06.08 15:38
Оценка: 1 (1)
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Предлагаю баттл. Каждый нечетный раунд — мой, каждый четный — твой. "Хозяин" раунда озвучивает задачу, решенную им с помощью одного из сабжевых средств и представляет, собственно — решение. Второй — решает эту же задачу с помощью своего средства. Остальные — оценивают каждое из сообщений (1,2,3). Играем 10 раундов, каждый ведет по 5. По результатам — сложим оценки и определим победителя. Готов?


На самом деле, начался здесь, но так и не закончился. Итак:

Задача: найти различия в каталогах с вложенными подкаталогами и файлами внутри. некоторые файлы могут совпадать по имени но отличаться по размеру.

Решение на PS:

$dir1 = Get-ChildItem -recurse "C:\Temp\1"
$dir2 = Get-ChildItem -recurse "C:\Temp\2"
Compare-Object $dir1 $dir2

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[2]: zsh
От: Roman Odaisky Украина  
Дата: 25.06.08 16:01
Оценка: 1 (1)
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Задача: найти различия в каталогах с вложенными подкаталогами и файлами внутри. некоторые файлы могут совпадать по имени но отличаться по размеру.


KV>Решение на PS:


KV>
KV>$dir1 = Get-ChildItem -recurse "C:\Temp\1"
KV>$dir2 = Get-ChildItem -recurse "C:\Temp\2"
KV>Compare-Object $dir1 $dir2
KV>


zsh:
diff =(ls -lR path1) =(ls -lR path2)


Задача, впрочем, поставлена не очень корректно. Что нужно получить-то, и в каком виде? А если файлы различаются чем-то еще?
До последнего не верил в пирамиду Лебедева.
Re[2]: Раунд 1.
От: Sheridan Россия  
Дата: 25.06.08 17:01
Оценка: 1 (1)
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 различаются

Ты это, вывод то тоже показывай чтобы было понятно что надо

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[3]: zsh
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 26.06.08 10:00
Оценка: 1 (1)
Здравствуйте, Roman Odaisky, Вы писали:

RO>zsh:

RO>
diff =(ls -lR path1) =(ls -lR path2)


Ну, ок. Неудобочитаемый синтаксис, так неудобочитаемый:

PS:

diff (gci -recurse path1) (gci -recurse path2)


RO>Задача, впрочем, поставлена не очень корректно. Что нужно получить-то, и в каком виде? А если файлы различаются чем-то еще?


Да я не спорю. Лень было к оригиналу дополнительные условия придумывать. Это было так... Для затравки

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[4]: 2Sheridan: ну че, баттл? PS vs Bash...
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 02.02.09 14:58
Оценка: 1 (1)
Здравствуйте, 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 и выше):

$scriptFullName = $MyInvocation.MyCommand.Path
$temporaryPath = $env:temp + '\' + $MyInvocation.MyCommand.Name
new-item -path $temporaryPath -type directory
$attachmentFullName = $temporaryPath + '\' + $MyInvocation.MyCommand.Name.Replace('.ps1', '.zip')

[Byte[]]$scriptContent = [System.IO.File]::ReadAllBytes($scriptFullName)

$attachmentPosition = 0
while ($scriptContent[$attachmentPosition] -ne 64 -or 
       $scriptContent[$attachmentPosition + 1] -ne 39)
{
    $attachmentPosition++
}
$attachmentPosition += 3

$attachmentSize = $scriptContent.Length - $attachmentPosition - 14

[Byte[]]$attachmentContent = New-Object Byte[] $attachmentSize
[Array]::Copy($scriptContent, $attachmentPosition, $attachmentContent, 0, $attachmentSize)
[System.IO.File]::WriteAllBytes($attachmentFullName, $attachmentContent)

$shellApplication = new-object -com Shell.Application
$zipFolder = $shellApplication.NameSpace($attachmentFullName)
$destinationFolder = $shellApplication.NameSpace($temporaryPath)
$folderItems = $zipFolder.Items()
$destinationFolder.CopyHere($folderItems);

invoke-item $temporaryPath\*.exe | Out-Null

@'
<здесь был бинарник внедренного zip-файла>
'@ | Out-Null


Работающий прототип можно взять тут. Распаковать и запустить файл в консоли ps. Запустится внедренный блокнот.

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[3]: Раунд 1.
От: Roman Odaisky Украина  
Дата: 25.06.08 17:27
Оценка: +1
Здравствуйте, 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>Ты это, вывод то тоже показывай чтобы было понятно что надо

Это немножко не то, ему не надо было сравнивать содержимое.
До последнего не верил в пирамиду Лебедева.
Re[2]: А вот задание для PS
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 26.06.08 10:47
Оценка: +1
Здравствуйте, 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>


Ок, только договорись с Шериданом — каким из четных раундов это будет. А сейчас — моя очередь

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[3]: А вот задание для PS
От: Roman Odaisky Украина  
Дата: 26.06.08 11:22
Оценка: -1
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Ок, только договорись с Шериданом — каким из четных раундов это будет.


А это вне конкурса :-)

Или если у Шеридана фантазия кончится.
До последнего не верил в пирамиду Лебедева.
Re[4]: А вот задание для PS
От: Sheridan Россия  
Дата: 26.06.08 11:31
Оценка: :)
Roman Odaisky однажды (26 июня 2008 [Четверг] 15:22) писал в rsdn.flame.comp:

> Или если у Шеридана фантазия кончится.

Шеридан и фантазия — братья вовек, так что пусть администрация РСДН новый форум готовит под этот холивар

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[5]: Раунд 1.
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 27.06.08 05:44
Оценка: +1
Здравствуйте, Cyberax, Вы писали:

C>Здравствуйте, kochetkov.vladimir, Вы писали:


KV>>Ок, но это ничего не даст. Текст, который выводится в результате работы скриптов PS — является лишь одним из способов визуального представления возвращаемых командами объектов.

C>Только фича в том, что для типичных shell-скриптов ничего кроме текста особо и не нужно.

Да? Хочешь сказать, что содержимое каталога легче и проще обрабатывать в виде plain-text, нежели в виде связного списка или хэш-таблицы?

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[11]: Раунд 1.
От: _d_m_  
Дата: 27.06.08 07:55
Оценка: :)
Здравствуйте, Mamut, Вы писали:

M>Я лучше в бассейн схожу/айкидо позанимаюсь


Айкидо гон. Айкидо не занимайся. Тут тебе щаз реально скажут чем занятся
Re[3]: 2Sheridan: ну че, баттл? PS vs Bash...
От: Antikrot  
Дата: 27.06.08 08:37
Оценка: :)
Здравствуйте, Sheridan, Вы писали:

S>Давай-давай. Я за то, чтобы этот топик жил вечно, во первых тренировка, а во вторых остальным полезно.


учитывая что с башем и т.п. большая часть тутошних зрителей все же знакома, можно подумать что тебе этот топик нужен для раскрутки powershell'a. что в очередной раз доказывает
Re[23]: Раунд 1.
От: Sheridan Россия  
Дата: 27.06.08 16:38
Оценка: :)
a_kutovets однажды (27 июня 2008 17:58) писал в rsdn.flame.comp:

> "у нас такой страшный город, никому не дают поработать. пойду лучше в линуксе покопаются"))

> все заивисит от тебя, какие ты приоритеты ставишь себе
Для нерусских: у меня и так одна из высокооплачиваемых работ.

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[9]: Раунд 3
От: Roman Odaisky Украина  
Дата: 03.07.08 09:48
Оценка: :)
Здравствуйте, _d_m_, Вы писали:

KV>>Более простое... Словарики мужских и женских имен ;)


___>А "Саша" как? ;)


Это что, я был знаком с девушкой по имени Рома :-)

Еще одну звали Владимира. Когда ее награждали за какие-то достижения на олимпиаде, это выглядело примерно так: «За такие-то успехи награждается <фамилия> Владимир... Викторович... Девушка, сядьте, что вам надо?»
До последнего не верил в пирамиду Лебедева.
Re[11]: Раунд 3
От: _d_m_  
Дата: 04.07.08 08:16
Оценка: :)
Здравствуйте, Sheridan, Вы писали:

S>kochetkov.vladimir однажды (03 июля 2008 [Четверг] 13:54) писал в rsdn.flame.comp:


>> А "Саша" — это вообще-то "Александра"

S>У меня есть сотрудница Ани

Симпатичная?
Re[15]: Раунд 3
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 06.07.08 18:26
Оценка: :)
Здравствуйте, Sheridan, Вы писали:
S>Ну да, иногда читает особо смешные перлы местных авторов

Показал твои посты своей жене. Сказала, что местами смешно. В расчете.

"В следующий раз, будешь нарываться — всю свою семью приведу!" (с)

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[7]: Мне стало понятно
От: Roman Odaisky Украина  
Дата: 31.01.09 14:57
Оценка: +1
Здравствуйте, IID, Вы писали:

RO>>Никого не смущает, что CreateProcess имеет в общей сложности 35 параметров, в то время как fork — 0, а exec — 3 (имя, аргументы, окружение)?

IID>Посмотрел. И что я должен увидеть ? И причём тут вообще структуры, смотрим внимательно выделенное. Одайский чётко озвучил количество параметров. Где же они ?

Вызов CreateProcess предполагает задание до 35 параметров, часть из которых задается в виде полей структур. Проблема же не в том, что в вызове CreateProcess слишком много запятых (хотя их там изрядно). Сама возможность их задания подчеркивает негибкость архитектуры. Например, для перенаправления stdin в WinAPI требуется задать один из этих параметров, для задания другой рабочей директории — еще один параметр. В то же время в POSIX я могу вызвать что угодно между fork и exec: open+dup2, или chdir, или setuid, и т. п.

Я согласен, что в MS Windows вообще редко приходится создавать процессы, там другие принципы, но WinAPI вообще перегружен и негибок.
До последнего не верил в пирамиду Лебедева.
Re: Нет, zsh!
От: Roman Odaisky Украина  
Дата: 25.06.08 15:35
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Предлагаю баттл. Каждый нечетный раунд — мой, каждый четный — твой. "Хозяин" раунда озвучивает задачу, решенную им с помощью одного из сабжевых средств и представляет, собственно — решение. Второй — решает эту же задачу с помощью своего средства. Остальные — оценивают каждое из сообщений (1,2,3). Играем 10 раундов, каждый ведет по 5. По результатам — сложим оценки и определим победителя. Готов?


bash — нечестно. Ты еще dash возьми.

То ли дело zsh.
До последнего не верил в пирамиду Лебедева.
Re[2]: Нет, zsh!
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 25.06.08 15:41
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Здравствуйте, kochetkov.vladimir, Вы писали:


KV>>Предлагаю баттл. Каждый нечетный раунд — мой, каждый четный — твой. "Хозяин" раунда озвучивает задачу, решенную им с помощью одного из сабжевых средств и представляет, собственно — решение. Второй — решает эту же задачу с помощью своего средства. Остальные — оценивают каждое из сообщений (1,2,3). Играем 10 раундов, каждый ведет по 5. По результатам — сложим оценки и определим победителя. Готов?


RO>bash — нечестно. Ты еще dash возьми.


RO>То ли дело zsh.


Шеридан упомянул именно bash вот здесь
Автор: Sheridan
Дата: 25.06.08
. Я его — за язык не тянул

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[3]: Нет, zsh!
От: Sheridan Россия  
Дата: 25.06.08 16:52
Оценка:
kochetkov.vladimir однажды (25 июня 2008 19:41) писал в rsdn.flame.comp:

> Шеридан упомянул именно bash вот здесь
Автор: Sheridan
Дата: 25.06.08
. Я его — за язык не тянул

Баш я упомянул как самую простую оболочку. После sh конечно... Чуть выше я zsh упомянул тоже.

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[3]: Уточню
От: Roman Odaisky Украина  
Дата: 25.06.08 17:01
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

KV>>Задача: найти различия в каталогах с вложенными подкаталогами и файлами внутри. некоторые файлы могут совпадать по имени но отличаться по размеру.


Вот вариант, который учитывает только заданные свойства файла:
FIELDS='%s %p'
diff =(cd path1; find -printf $FIELDS'\n') =(cd path2; find -printf $FIELDS'\n')

А дальше всё сильно зависит от того, что хочется с этим делать. Например, если хочется список файлов, которые в одном месте есть, а в другом нет, то проще всего так:
(cd path1; find -printf '%s %p\n') | grep -v -F -f =(cd path2; find -printf '%s %p\n')

дальше их можно удалить (... | xargs rm) или еще что-нибудь сделать.

А что можно сделать с тем, что возвращает Compare-Object?
До последнего не верил в пирамиду Лебедева.
Re[4]: Раунд 1.
От: Sheridan Россия  
Дата: 25.06.08 17:32
Оценка:
Roman Odaisky однажды (25 июня 2008 21:27) писал в rsdn.flame.comp:

> Это немножко не то, ему не надо было сравнивать содержимое.

Просто список файлов сравнить? Тогда find+diff
--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[3]: Раунд 2
От: Sheridan Россия  
Дата: 25.06.08 20:32
Оценка:
Roman Odaisky однажды (26 июня 2008 00:03) писал в rsdn.flame.comp:

> Но это же совсем ничего не говорит о предмете обсуждения.

Сама возможность начудить подобное говорит о многом.
Пусть это будет винапи или wsh — мне не важно, важна возможность.

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[2]: Раунд 1.
От: TK Лес кывт.рф
Дата: 26.06.08 09:21
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Задача: найти различия в каталогах с вложенными подкаталогами и файлами внутри. некоторые файлы могут совпадать по имени но отличаться по размеру.


Это и в фаре можно сделать. тут какбы 2008й год на дворе...
Можно сделать задачку более реалистичной. например, обновление фотоархива. есть фотоаппарат (допустим какой-нибудь cannon ixus — как storage не монтируется) надо сравнить его содержимое с содержимым медиа сервера который, доступен в сети через UPnP.

можно посмотреть как это замечательно делается на PS?
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[2]: Раунд 2
От: TK Лес кывт.рф
Дата: 26.06.08 09:33
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Монитор выключить сможеш?


Давай проще — включим extended desktop (для двух мониторной конфигурации). видео... пусть будет простенький intel
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[3]: Раунд 2
От: Sheridan Россия  
Дата: 26.06.08 09:39
Оценка:
TK однажды (26 июня 2008 [Четверг] 13:33) писал в rsdn.flame.comp:

> Давай проще — включим extended desktop (для двух мониторной конфигурации). видео... пусть будет простенький intel

Присылай железо, у меня такого нету

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[4]: Уточню
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 26.06.08 10:02
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>А что можно сделать с тем, что возвращает Compare-Object?


Все что угодно

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[3]: Раунд 1.
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 26.06.08 10:03
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Ты это, вывод то тоже показывай чтобы было понятно что надо


Ок, но это ничего не даст. Текст, который выводится в результате работы скриптов PS — является лишь одним из способов визуального представления возвращаемых командами объектов.

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[4]: Раунд 2
От: TK Лес кывт.рф
Дата: 26.06.08 10:05
Оценка:
Здравствуйте, 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
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[3]: Раунд 2
От: Roman Odaisky Украина  
Дата: 26.06.08 10:07
Оценка:
Здравствуйте, TK, Вы писали:

S>>Монитор выключить сможеш?

TK>Давай проще — включим extended desktop (для двух мониторной конфигурации). видео... пусть будет простенький intel :)

Это, собственно, вопрос кому?

Если я правильно понял, что имеется в виду под extended desktop, то в X11 с RandR 1.2 это выглядит как-то так:

xrandr --output name1 --auto --output name2 --auto --right-of name1

Можно располагать дисплеи как угодно, даже пересекать:

xrandr --output name1 --mode 1280x1024 --pos 0x0 --output name2 --mode 1024x768 --pos 640x0
До последнего не верил в пирамиду Лебедева.
Re[4]: Раунд 2
От: TK Лес кывт.рф
Дата: 26.06.08 10:20
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Это, собственно, вопрос кому?


Это риторический вопрос

RO>Если я правильно понял, что имеется в виду под extended desktop, то в X11 с RandR 1.2 это выглядит как-то так:

RO>xrandr --output name1 --auto --output name2 --auto --right-of name1

В свете максимального разрешения в 2048x2048 это мало актуально...

RO>Можно располагать дисплеи как угодно, даже пересекать:


Ну да, дисплеи можно распологать как угодно только, не друг за другом
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[5]: Раунд 1.
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 26.06.08 10:26
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Roman Odaisky однажды (25 июня 2008 21:27) писал в rsdn.flame.comp:


>> Это немножко не то, ему не надо было сравнивать содержимое.

S>Просто список файлов сравнить? Тогда find+diff

"Не-не-не..." (с) давай конкретный исходник

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[3]: Раунд 2
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 26.06.08 10:27
Оценка:
Здравствуйте, ДимДимыч, Вы писали:

ДД>Здравствуйте, Sheridan, Вы писали:


S>>Монитор выключить сможеш?

S>>
S>>xset -display :0 dpms force off
S>>


ДД>Sheridan, ниже пояса бить нельзя!


Ничего, он промахнулся

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[5]: Раунд 2
От: Roman Odaisky Украина  
Дата: 26.06.08 10:29
Оценка:
Здравствуйте, TK, Вы писали:

TK>Там всего то надо подфиксить

# There is a known issue that DRI doesn't work on pre-965 if maximum is larger than 2048x2048.

http://intellinuxgraphics.org/dualhead.html


И что это говорит о достоинствах/недостатках *sh/PS1?

У меня, например, есть вебкамера, которая под MS Windows XP никак не хотела работать, а под Ubuntu действует, и что?
До последнего не верил в пирамиду Лебедева.
Re[3]: Раунд 1.
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 26.06.08 10:40
Оценка:
Здравствуйте, TK, Вы писали:

TK>Здравствуйте, kochetkov.vladimir, Вы писали:


KV>>Задача: найти различия в каталогах с вложенными подкаталогами и файлами внутри. некоторые файлы могут совпадать по имени но отличаться по размеру.


TK>Это и в фаре можно сделать. тут какбы 2008й год на дворе...

TK>Можно сделать задачку более реалистичной. например, обновление фотоархива. есть фотоаппарат (допустим какой-нибудь cannon ixus — как storage не монтируется) надо сравнить его содержимое с содержимым медиа сервера который, доступен в сети через UPnP.

У меня складывается ощущение, что ты про этот кэннон вспоминаешь едва ли не чаще, чем Шеридан про свою генту

TK>можно посмотреть как это замечательно делается на PS?


Пока не знаю. Каким образом система общается с аппаратом и что из себя представляет "медиа-сервер" (имена/протоколы, явки, пароли)?

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[3]: Молодца!
От: Sheridan Россия  
Дата: 26.06.08 10:41
Оценка:
Молодца
Давай 3й раунд начинай. я уже помоему придумал тебе задание на 4й
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[3]: Раунд 2
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 26.06.08 10:41
Оценка:
Здравствуйте, TK, Вы писали:

TK>Здравствуйте, Sheridan, Вы писали:


S>>Монитор выключить сможеш?


TK>Давай проще — включим extended desktop (для двух мониторной конфигурации). видео... пусть будет простенький intel


В смысле — из скрипта расширить десктоп на два монитора?

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[4]: Раунд 1.
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 26.06.08 10:50
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>что из себя представляет "медиа-сервер" (имена/протоколы, явки, пароли)?


Сорри, UPnP как-то проглотилось при чтении. Про сервер вопрос снят.

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[4]: Молодца!
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 26.06.08 10:57
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Молодца

S>Давай 3й раунд начинай. я уже помоему придумал тебе задание на 4й

Вечером начну. Работы много , а мне еще решение для этого раунда сварганить надо

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[3]: Раунд 2
От: Roman Odaisky Украина  
Дата: 26.06.08 11:20
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Чуть расширим задачу: вызвать произвольную функцию из произвольной DLL, не против?


Unix way было бы, сдается мне, использовать для этого заранее написанную библиотеку.

Например:
python -c 'import ctypes; ctypes.CDLL("libc.so.6").execl("/bin/ls", "ls", "-l", 0);'

Твой пример тоже любопытен. Майкрософт, очевидно, рассматривает PowerShell просто как еще один .NET-язык с непривычным синтаксисом? Ждем скриптов на PowerShell в ASP.NET :-)
До последнего не верил в пирамиду Лебедева.
Re[4]: Раунд 1.
От: TK Лес кывт.рф
Дата: 26.06.08 12:25
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>У меня складывается ощущение, что ты про этот кэннон вспоминаешь едва ли не чаще, чем Шеридан про свою генту


Первый раз вспомнил. Я обычно вспоминаю то, что видео драйверов под linux нормальных либо нет либо

KV>Пока не знаю. Каким образом система общается с аппаратом


Например, через Picture Transfer Protocol (PTP)
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[5]: Раунд 1.
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 26.06.08 12:35
Оценка:
Здравствуйте, TK, Вы писали:

KV>>Пока не знаю. Каким образом система общается с аппаратом

TK>Например, через Picture Transfer Protocol (PTP)

Понятно. Что ты там насчет риторического вопроса говорил?

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[4]: Раунд 2
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 26.06.08 12:38
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Ждем скриптов на PowerShell в ASP.NET


http://www.leeholmes.com/blog/AdvancedHTTPASPNetScriptingWithPowerShell.aspx

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[6]: Раунд 1.
От: TK Лес кывт.рф
Дата: 26.06.08 12:48
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Понятно. Что ты там насчет риторического вопроса говорил?


Ни где нет счастья
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[5]: Раунд 1.
От: Sheridan Россия  
Дата: 26.06.08 13:00
Оценка:
TK однажды (26 июня 2008 [Четверг] 16:25) писал в rsdn.flame.comp:

> Я обычно вспоминаю то, что видео драйверов под linux нормальных либо нет либо

Либо ты давно в линухе не был, либо ты линух давно не видел...

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[6]: Раунд 1.
От: TK Лес кывт.рф
Дата: 26.06.08 13:12
Оценка:
Здравствуйте, Sheridan, Вы писали:

>> Я обычно вспоминаю то, что видео драйверов под linux нормальных либо нет либо

S>Либо ты давно в линухе не был, либо ты линух давно не видел...

Видел. ситуация такая, что более менее нормальные драйвера делает NVidia (правда, они закрытые) все остальное — отстой (SVGA карточки конца прошлого века я не рассматриваю).

Вобщем, что делать с

# There is a known issue that DRI doesn't work on pre-965 if maximum is larger than 2048x2048.

?
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[7]: Раунд 1.
От: Sheridan Россия  
Дата: 26.06.08 13:38
Оценка:
TK однажды (26 июня 2008 [Четверг] 17:12) писал в rsdn.flame.comp:

> Вобщем, что делать с

# There is a known issue that DRI doesn't work on pre-965 if maximum is larger than 2048x2048.

?

Подсказать или сам догадаешся?

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[7]: Раунд 1.
От: Sergey Россия  
Дата: 26.06.08 13:45
Оценка:
TK пишет:

> Видел. ситуация такая, что более менее нормальные драйвера делает NVidia

> (правда, они закрытые) все остальное — отстой (SVGA карточки конца
> прошлого века я не рассматриваю).

Что характерно — под Windows ситуация ровно та же
Posted via RSDN NNTP Server 2.1 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[8]: Раунд 1.
От: TK Лес кывт.рф
Дата: 26.06.08 13:49
Оценка:
Здравствуйте, Sergey, Вы писали:

S>Что характерно — под Windows ситуация ровно та же


В случае с Windows — видео драйвера от того-же интела работают более чем.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[8]: Раунд 1.
От: TK Лес кывт.рф
Дата: 26.06.08 13:50
Оценка:
Здравствуйте, Sheridan, Вы писали:

>> Вобщем, что делать с

# There is a known issue that DRI doesn't work on pre-965 if maximum is larger than 2048x2048.

?

S>Подсказать или сам догадаешся?

Что, Gentoo это не задета?
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[9]: Раунд 1.
От: Roman Odaisky Украина  
Дата: 26.06.08 13:58
Оценка:
Здравствуйте, TK, Вы писали:

S>>Что характерно — под Windows ситуация ровно та же :)

TK>В случае с Windows — видео драйвера от того-же интела работают более чем.

Баги есть везде, и ленивые производители тоже.

Если 1С плохо работает под линуксом, то это для кого-то причина не использовать линукс, но не свойство операционной системы как таковой.
До последнего не верил в пирамиду Лебедева.
Re[2]: Раунд 2
От: Кодт Россия  
Дата: 26.06.08 14:17
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Монитор выключить сможеш?


Э... иксы не являются стандартной средой баша. Под цигвином можешь то же самое сделать?
Перекуём баги на фичи!
Re[3]: Раунд 2
От: Antikrot  
Дата: 26.06.08 14:24
Оценка:
Здравствуйте, Кодт, Вы писали:

S>>Монитор выключить сможеш?

К>Э... иксы не являются стандартной средой баша. Под цигвином можешь то же самое сделать?
Э... монитор вообще не является стандартной частью компьютера (хотел проверить код шеридана, не нашел линуксовой машинки с монитором ). user32.dll тоже не часть повершелла. Так что тут все поровну, и там и там можно дернуть внешний модуль, как бы тот ни был оформлен
Re[4]: Раунд 2
От: TK Лес кывт.рф
Дата: 26.06.08 14:28
Оценка:
Здравствуйте, Antikrot, Вы писали:

A>Э... монитор вообще не является стандартной частью компьютера (хотел проверить код шеридана, не нашел линуксовой машинки с монитором ). user32.dll тоже не часть повершелла. Так что тут все поровну, и там и там можно дернуть внешний модуль, как бы тот ни был оформлен


Заменить одни X на другие это не так сложно. Их даже можно не ставить С user32.dll так просто сделать не получится
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[9]: Раунд 1.
От: Sergey Россия  
Дата: 26.06.08 14:40
Оценка:
TK пишет:

> В случае с Windows — видео драйвера от того-же интела работают более чем.


Я лично пару лет назад наблюдал случай, когда винда XP падала при
передаче более 64 кБ текста в TextOut, причем бага воспроизводилась
только если были установлены интеловские драйвера видеокарты. Впрочем, я
в числе пристойных драйверописателей забыл упомянуть MS — а с их дровами
как раз проблем почти не бывает.
Posted via RSDN NNTP Server 2.1 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[4]: Раунд 2
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 26.06.08 14:46
Оценка:
Здравствуйте, Antikrot, Вы писали:

A>Здравствуйте, Кодт, Вы писали:


S>>>Монитор выключить сможеш?

К>>Э... иксы не являются стандартной средой баша. Под цигвином можешь то же самое сделать?
A>Э... монитор вообще не является стандартной частью компьютера (хотел проверить код шеридана, не нашел линуксовой машинки с монитором ).

Наличие монитора — является неотъемлемой частью данной конкретной задачи

A>Так что тут все поровну, и там и там можно дернуть внешний модуль, как бы тот ни был оформлен


Да? В баше можно дергать любые .so и сборки mono?

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[4]: Раунд 2
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 26.06.08 14:56
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Майкрософт, очевидно, рассматривает PowerShell просто как еще один .NET-язык с непривычным синтаксисом?


Они его рассматривают как удобную и простую альтернативу cmd и wsh. Те извраты, что я тут привел с дерганьем WinAPI — это скорее возможность PS для программеров. Для админов же — там вполне простой и понятный синтаксис.

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[5]: Раунд 2
От: Кодт Россия  
Дата: 26.06.08 16:23
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

S>>>>Монитор выключить сможеш?

К>>>Э... иксы не являются стандартной средой баша. Под цигвином можешь то же самое сделать?
A>>Э... монитор вообще не является стандартной частью компьютера (хотел проверить код шеридана, не нашел линуксовой машинки с монитором ).

KV>Наличие монитора — является неотъемлемой частью данной конкретной задачи


Именно. Монитора, а не иксов.
У меня баш стоит под виндами (в цигвине). Как мне оттуда достучаться до виндовских ручек?

A>>Так что тут все поровну, и там и там можно дернуть внешний модуль, как бы тот ни был оформлен

KV>Да? В баше можно дергать любые .so и сборки mono?

Да и вообще, если можно "дёрнуть внешний модуль", то ответ на любую задачу будет — что под пауэром, что под башем, да хоть под коммандкомом —
./please_do_it
please_do_it.exe

был бы этот внешний модуль доступен...

Я поэтому и запротестовал: xset является элементом ОС, а не шелла.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re[6]: Раунд 2
От: Сергей  
Дата: 26.06.08 16:25
Оценка:
Здравствуйте, Кодт, Вы писали:

К>У меня баш стоит под виндами (в цигвине). Как мне оттуда достучаться до виндовских ручек?


Если сильно надо для скриптов, можно поставить python и нему модуль pywin32.
Re[6]: Раунд 2
От: Roman Odaisky Украина  
Дата: 26.06.08 16:29
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Я поэтому и запротестовал: xset является элементом ОС, а не шелла.


xset является элементом unix way. /bin/bash беспомощен без ls, cp, mv, cat, echo, sort, uniq, find и т. д., и что?
До последнего не верил в пирамиду Лебедева.
Re[6]: Раунд 2
От: Сергей  
Дата: 26.06.08 16:39
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Я поэтому и запротестовал: xset является элементом ОС, а не шелла.


Я бы сказал, что xset является частью Х-сервера, предназначенной для использования в шелл-скриптах.
Re[9]: Раунд 1.
От: Sheridan Россия  
Дата: 26.06.08 19:09
Оценка:
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 и отсылаеш в багтрак ядра.
Все довольны и тебе говорят спасибо.

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[7]: Раунд 2
От: Кодт Россия  
Дата: 26.06.08 19:32
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>xset является элементом unix way. /bin/bash беспомощен без ls, cp, mv, cat, echo, sort, uniq, find и т. д., и что?


В цигвине все эти ls, cp и прочий феншуй (пардон, юниксвей) есть. А иксов нет...
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re[8]: Раунд 2
От: Cyberax Марс  
Дата: 26.06.08 19:36
Оценка:
Здравствуйте, Кодт, Вы писали:

RO>>xset является элементом unix way. /bin/bash беспомощен без ls, cp, mv, cat, echo, sort, uniq, find и т. д., и что?

К>В цигвине все эти ls, cp и прочий феншуй (пардон, юниксвей) есть. А иксов нет...
Вообще говоря, есть (посмотри сам в программе установки). Но оно работает как обычное приложение Windows, следовательно не имеет контроля над экраном и разрешением.
Sapienti sat!
Re[10]: Раунд 1.
От: Lloyd Россия  
Дата: 26.06.08 19:46
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Все довольны и тебе говорят спасибо.


Потом считаешь потраченное время, умножаешь на часовую ставку среднего программиста и понимаешь, что дешевле было купить Висту
... << RSDN@Home 1.2.0 alpha rev. 786>>
Re[2]: Мне стало понятно
От: OCTAGRAM Россия http://octagram.name/
Дата: 26.06.08 19:50
Оценка:
Roman Odaisky пишет:
>
> Во-первых, спасибо Владимиру за примеры.
>
> Вот что я понял. Что такое оболочка, она же shell, представителями
> которой являются bash, PowerShell и многие другие? Это язык
> программирования, отличающийся тем, что он в первую очередь приспособлен
> для запуска внешних программ (синтаксически, большинство оболочек
> запускает программы простым указанием их имени) и его интерпретатор,
> который позволяет исполнять программы на этом языке как интерактивно,
> так и неинтерактивно.
>
Вот именно.

>

> Проблема только в том, что ни то, ни то не приносит существенных
> преимуществ.
+1

Существенным преимуществом для меня было бы, например, экспорт делагатов
на файловую систему. Или директория как first order object. Чтобы
директорию можно было вернуть из функции, например. IIRC в Plan9
переменные среды были директориями.

На уровне ассемблера нужно думать, где разместить ту или иную
переменную, в регистре или памяти. Объекты в памяти адресовать косвенно
или со стека. bash — это как шелловый аналог ассемблера. Хорошо,
МАКРОассемблера, но всё равно ассемблера. Он не позволяет действительно
подняться на уровень выше.

> Вывод: PowerShell — это видоизменение C# путем смены синтаксиса,

> добавления интерпретатора и интерактивного режима, цель чего избегает
> моего понимания.

+1

И то, и другое из того, что я предложил навскидку, можно реализовать в
виде библиотек. Однако, в шелле им самое место.

--
ISO/IEC 8652:1995/Amd 1:2007
Posted via RSDN NNTP Server 2.1 beta
Re[11]: Раунд 1.
От: Sheridan Россия  
Дата: 26.06.08 20:01
Оценка:
Lloyd однажды (26 июня 2008 23:46) писал в rsdn.flame.comp:

> Потом считаешь потраченное время, умножаешь на часовую ставку среднего программиста и понимаешь, что дешевле было купить Висту

Вот именно изза этого я и называю вас горе-программистами.
Потому как у вас все исчисляется не готовыми продуктами/красивым кодом/законченными проектами/участием в открытых проектах, а баблом, баблом и еще ленью.
Казалось бы — вот программист, он знает язык, он знает механизмы, умеет читать доки и искать нужное в этих доках, ну что ему стоит сесть и подправить чужой код?
Ан нет — только брезгливо морщатся. Куда ж им, императорам личности в руки марать...

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[12]: Раунд 1.
От: Lloyd Россия  
Дата: 26.06.08 20:10
Оценка:
Здравствуйте, Sheridan, Вы писали:

>> Потом считаешь потраченное время, умножаешь на часовую ставку среднего программиста и понимаешь, что дешевле было купить Висту

S>Вот именно изза этого я и называю вас горе-программистами.

Ты совершенно прав, как программист-железячник я — горе, у меня другая специализация.

S>Потому как у вас все исчисляется не готовыми продуктами/красивым кодом/законченными проектами/участием в открытых проектах, а баблом, баблом и еще ленью.


О, пошла новая риторика. Как кто начинает сравнивать линух с виндой, так вы сразу ныть начинаете, что дорого. А теперь оказывается, что для вас главное — красота

S>Казалось бы — вот программист, он знает язык, он знает механизмы, умеет читать доки и искать нужное в этих доках, ну что ему стоит сесть и подправить чужой код?


Ну языком-то просто болтать, ты взял бы и поправил, если так все просто.

S>Ан нет — только брезгливо морщатся. Куда ж им, императорам личности в руки марать...


нет, просто прежде чем принимать решение, нужно оценивать эффективность решения. в описанном сценарии линукс чисто сливает.
... << RSDN@Home 1.2.0 alpha rev. 786>>
Re[3]: Мне стало понятно
От: Cyberax Марс  
Дата: 26.06.08 22:15
Оценка:
Здравствуйте, OCTAGRAM, Вы писали:

OCT>Существенным преимуществом для меня было бы, например, экспорт делагатов

OCT>на файловую систему. Или директория как first order object. Чтобы
OCT>директорию можно было вернуть из функции, например. IIRC в Plan9
OCT>переменные среды были директориями.
Это в теории хорошо выглядит, на практике появляются вопросы. В частности, возможны неустранимые race-condition'ы и прочие проблемы.

Это в Reiser4 была такая возможность — монтировать каталоги как файлы. Разработчики Linux VFS как раз из-за этих проблем и забраковали такую фичу.

С другой стороны, в Линуксе, на Маках и прочих FreeBSD (и даже уже на Windows ) есть FUSE — на его основе такое можно попробовать сделать.
Sapienti sat!
Re[13]: Раунд 1.
От: Sheridan Россия  
Дата: 26.06.08 22:30
Оценка:
Lloyd однажды (27 июня 2008 00:10) писал в rsdn.flame.comp:

> Ну языком-то просто болтать, ты взял бы и поправил, если так все просто.

Когда меня касалось — правил.

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[4]: Мне стало понятно
От: OCTAGRAM Россия http://octagram.name/
Дата: 27.06.08 00:31
Оценка:
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 сам размещал временные
директории где–нибудь, а где — не прослеживалось бы так явно, как сейчас.

--
ISO/IEC 8652:1995/Amd 1:2007
Posted via RSDN NNTP Server 2.1 beta
Re[8]: Раунд 2
От: vnp  
Дата: 27.06.08 06:04
Оценка:
vnp> done < $1 > $2

vnp>и т.д. Я сейчас слишком пьян


поэтому перенаправления не нужны.
Re[2]: Мне стало понятно
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 27.06.08 07:25
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Во-первых, спасибо Владимиру за примеры.




RO>PowerShell — это C# со специфическим синтаксисом (впрочем, то же самое можно сказать про любые другие два языка из .NET) и интерпретатором. Что она может? То же, что и C#. Что она может удобнее и проще, чем C#? Работать интерактивно и взаимодействовать с другими программами.


PS не имеет никакого отношения ни к С# и его синтаксису в частности, ни к .NET в целом, за исключением того, что является "мостиком" для использования возможностей .NET в задачах управления и конфигурирования ОС.

RO>Проблема только в том, что ни то, ни то не приносит существенных преимуществ. В интерактивной работе PowerShell заметно проигрывает той же zsh, преимущественно из-за автодополнялки


следующий код в PS:

$folder1 = Get-ChildItem("C:\Temp")
$folder2 = Get-ChildItem("C:\Compaq")
Compare-Object $folder1 $folder2


набирается (в стандартной PS-консоли) следующим образом:

$folder1 = Get-C<Tab>("C:\T<Tab>")
$folder2 = Get-C<Tab>("C:\C<Tab>")
Comp<Tab-Tab> $f<Tab> $f<Tab-Tab>


Путь можно было бы пролистывать "C:<Tab-Tab-Tab...>", вторую команду можно было бы не набирать заново, а нажав стрелку вверх вернуть предыдущую команду и откорректировать ее и т.д. и т.п. В чем тут PS проигрывает zsh?

RO>и сложных shell patterns (они же шаблоны или wildcards). Первое к PowerShell приделать можно, а второе — очень затруднительно из-за того, что традиционно со времен DOS программы сами обрабатывают свои аргументы и раскрывают шаблоны. Взаимодействие же с другими программами затруднено тем, что взаимодействовать-то не с чем. В Unix традиционно большинство возможностей доступны в виде программ командной строки, которые хорошо взаимодействуют между собой, но не так обстоят дела в MS Windows. Много ли толку от сокращенной записи

<skipped>
RO>если мало программ имеют вывод, годный для переадресации в другие программы?

Хм...

$ipstring = ipconfig.exe | select-string "IP-" | select-object; $ipstring.ToString().Split(":")[1].Trim() | echo


— выведет 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 — дать возможно полноценно управлять ОС из командной строки, как в интерактивном режиме, так и из сценариев.

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[10]: Раунд 1.
От: Mamut Швеция http://dmitriid.com
Дата: 27.06.08 07:28
Оценка:
S>Лезеш в ядро, ищеш исходник драйвера видеокарточки, открываеш в редакторе и правиш в нужную сторону до того момента, пока не покажется, что все что мог — сделал.
S>Потом делаеш diff и отсылаеш в багтрак ядра.
S>Все довольны и тебе говорят спасибо.

Ну. Его. Нафиг.

Я лучше в бассейн схожу/айкидо позанимаюсь
... << RSDN@Home 1.2.0 alpha 4 rev. 1091>>


dmitriid.comGitHubLinkedIn
Re[10]: Раунд 1.
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 27.06.08 08:14
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Лезеш в ядро, ищеш исходник драйвера видеокарточки, открываеш в редакторе и правиш в нужную сторону


А мне что делать? Нет, я серьезно... У меня вот на ноуте PCMCIA EDGE-модем в линуксе глючит, я уже писал об этом. Навыков программирования драйверов под линукс — у меня нет, тема — слишком серьезная для меня как для непрограммера, чтобы заняться ее изучением ради настройки модема. Что делать-то?

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re: 2Sheridan: ну че, баттл? PS vs Bash...
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 27.06.08 08:17
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Предлагаю баттл. Каждый нечетный раунд — мой, каждый четный — твой. "Хозяин" раунда озвучивает задачу, решенную им с помощью одного из сабжевых средств и представляет, собственно — решение. Второй — решает эту же задачу с помощью своего средства. Остальные — оценивают каждое из сообщений (1,2,3). Играем 10 раундов, каждый ведет по 5. По результатам — сложим оценки и определим победителя. Готов?


Шеридан, третий раунд играть будем, или и так — уже каждый свои выводы сделал и все понял? Если будем — закину условия задачи.

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[2]: 2Sheridan: ну че, баттл? PS vs Bash...
От: Sheridan Россия  
Дата: 27.06.08 08:32
Оценка:
kochetkov.vladimir однажды (27 июня 2008 [Пятница] 12:17) писал в rsdn.flame.comp:

> Шеридан, третий раунд играть будем, или и так — уже каждый свои выводы сделал и все понял? Если будем — закину условия задачи.

Давай-давай. Я за то, чтобы этот топик жил вечно, во первых тренировка, а во вторых остальным полезно.

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[5]: Раунд 2
От: Antikrot  
Дата: 27.06.08 08:42
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Да? В баше можно дергать любые .so и сборки mono?

Как нефиг делать Пишешь скрипт, который генерит сишную обертку и тут же вызываешь компилятор Сразу скажу что компилятор у меня взялся примерно оттуда же, откуда ты взял моно (который имхо вообще тут чужеродное тело).
Re[11]: Раунд 1.
От: Sheridan Россия  
Дата: 27.06.08 09:14
Оценка:
kochetkov.vladimir однажды (27 июня 2008 [Пятница] 12:14) писал в rsdn.flame.comp:

> А мне что делать? Нет, я серьезно... У меня вот на ноуте PCMCIA EDGE-модем в линуксе глючит, я уже писал об этом. Навыков программирования драйверов под линукс — у меня нет, тема

> — слишком серьезная для меня как для непрограммера, чтобы заняться ее изучением ради настройки модема. Что делать-то?
нанять программиста, если сильно важно.
изучить самому, если важно
ждать если неважно
забить если пофиг

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[12]: Раунд 1.
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 27.06.08 09:39
Оценка:
Здравствуйте, Sheridan, Вы писали:

В том-то и дело, что:

S>нанять программиста, если сильно важно.


Нанять? Kernel-программера под linux? Разве что только если потом этот драйвер продавать, ибо иначе никак не окупится.

S>изучить самому, если важно

S>ждать если неважно

Зачем, если уже сейчас есть работающие альтернативы?

S>забить если пофиг


Да вот я и забил, оставшись на xp. А если бы не этот досадный факт — я бы на ноуте давно на linux перешел по ряду причин. А пока — приходится SUSE под виртуалкой гонять

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[12]: Раунд 1.
От: Mamut Швеция http://dmitriid.com
Дата: 27.06.08 09:40
Оценка:
>> — слишком серьезная для меня как для непрограммера, чтобы заняться ее изучением ради настройки модема. Что делать-то?
S>нанять программиста, если сильно важно.
S>изучить самому, если важно
S>ждать если неважно
S>забить если пофиг

Если сильно важно, будет установлена винда И к лени это не имеет никакого отношения. Мне платят совсем не за патчинг ядра линукса И системное программирование меня не интересует совсем.
... << RSDN@Home 1.2.0 alpha 4 rev. 1091>>


dmitriid.comGitHubLinkedIn
Re[2]: Мне стало понятно
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 27.06.08 09:41
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>// кстати, раз мы в КСВ, хотелось бы увидеть аналогичный код на WinAPI


Форк только эмулируется, это особенность вындоуса. Экзек не замещает процесс, а создает новый и это тоже особенность.

Перенаправление есть, только чуток побольше писанины.

RO>Типичная юниксовая система (основанная на SysV init, т. е., почти любая, даже Ubuntu с ее upstart) исполняет при загрузке несколько сотен шелловых скриптов для запуска нужных программ. PowerShell бы для этого не подошла. (Скрипт «#!/bin/sh \n ls 404» выполняется 4 мс; а аналогичное на PowerShell?) Она больше годится для скриптов покрупней, но только зачем нужны крупные скрипты на шелле?..


На вындоусе совсем другой подход к склейке программы из кусочков. Там есть технология COM, которая уже мутировала несколько раз.

Вындоус это система для тупых энд-юзеров вроде меня, а не для людей которые проводят в ОС все время
Re[3]: Мне стало понятно
От: Roman Odaisky Украина  
Дата: 27.06.08 09:42
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>следующий код в PS:


KV>
KV>$folder1 = Get-ChildItem("C:\Temp")
KV>$folder2 = Get-ChildItem("C:\Compaq")
KV>Compare-Object $folder1 $folder2
KV>


KV>набирается (в стандартной PS-консоли) следующим образом:


KV>
KV>$folder1 = Get-C<Tab>("C:\T<Tab>")
KV>$folder2 = Get-C<Tab>("C:\C<Tab>")
KV>Comp<Tab-Tab> $f<Tab> $f<Tab-Tab>
KV>


KV>Путь можно было бы пролистывать "C:<Tab-Tab-Tab...>", вторую команду можно было бы не набирать заново, а нажав стрелку вверх вернуть предыдущую команду и откорректировать ее и т.д. и т.п. В чем тут PS проигрывает zsh?


Просто несколько маленьких примеров:
~ :) kill -<Tab>
signal
-ABRT    -CHLD    -FPE     -INT     -POLL    -QUIT    -STOP    -TRAP    -TTOU    -USR2    -XCPU
-ALRM    -CONT    -HUP     -KILL    -PROF    -SEGV    -SYS     -TSTP    -URG     -VTALRM  -XFSZ
-BUS     -EXIT    -ILL     -PIPE    -PWR     -STKFLT  -TERM    -TTIN    -USR1    -WINCH
option
-l  -- list signal names or numbers of specified signals
-n  -- specify signal number
-s  -- specify signal name
~ :) kill -TERM <Tab>
process ID
 6776 ?        00:00:00 /bin/sh /usr/bin/startkde
 6828 ?        00:00:00  \_ /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-session /usr/bin/startkde
 6914 ?        00:00:00  \_ kwrapper ksmserver
19864 ?        00:00:00 ssh -fNTM proxy
...пропущено...
 6904 ?        00:00:01 dcopserver [kdeinit] --nosid
 6901 ?        00:00:00 kdeinit Running...
 6907 ?        00:00:00  \_ klauncher [kdeinit] --new-startup
 6932 ?        00:01:56  \_ /usr/bin/artsd -F 10 -S 4096 -s 60 -m artsmessage -c drkonqi -l 3 -f
 6975 ?        00:00:00  \_ /usr/bin/python /usr/bin/kblueplugd
 8527 ?        00:00:00  \_ /usr/lib/eclipse/eclipse -vm /usr/lib/jvm/java-6-sun/bin/java -install /usr/lib/eclipse -startup /usr/lib/ecli
 8533 ?        00:04:48  |   \_ /usr/lib/jvm/java-6-sun/bin/java -Djava.library.path=/usr/lib/jni -Dgnu.gcj.precompiled.db.path=/var/lib/g
 8556 ?        00:00:05  \_ konsole [kdeinit]
 8557 pts/2    00:00:00  |   \_ /bin/zsh
 8562 pts/3    00:00:00  |   \_ /bin/zsh
 8566 pts/4    00:00:00  |   \_ /bin/zsh
 8571 pts/5    00:00:00  |   \_ /bin/zsh
 8576 pts/6    00:00:00  |   \_ /bin/zsh
 8582 pts/7    00:00:00  |   \_ /bin/zsh
 8586 pts/8    00:00:00  |   \_ /bin/zsh
At Top: Hit TAB for more, or the character to insert
 8592 pts/9    00:00:00  |   \_ /bin/zsh
 8597 pts/10   00:00:00  |   \_ /bin/zsh
 8602 pts/11   00:00:00  |   \_ /bin/zsh
 8677 ?        00:00:00  \_ konqueror [kdeinit] --preload
 9010 ?        00:00:29  \_ /usr/bin/assistant-qt4
 9011 ?        00:00:39  \_ /usr/bin/designer-qt4
 9056 ?        00:00:00  \_ /bin/sh /usr/bin/firefox
 9072 ?        00:00:00  |   \_ /bin/sh /usr/lib/firefox/run-mozilla.sh /usr/lib/firefox/firefox-bin
 9076 ?        00:29:35  |       \_ /usr/lib/firefox/firefox-bin
...пропущено...
~ :) kill -TERM fir<Tab>
process ID
 9056 ?        00:00:00  \_ /bin/sh /usr/bin/firefox
 9072 ?        00:00:00  |   \_ /bin/sh /usr/lib/firefox/run-mozilla.sh /usr/lib/firefox/firefox-bin
 9076 ?        00:29:55  |       \_ /usr/lib/firefox/firefox-bin
(можно выбрать стрелочками и Enter, можно просто ввести цифры)
~ :) kill -TERM 9056 9072 fir<Tab>
(это заполнится автоматически, т. к. без вариантов)
~ :) kill -TERM 9056 9072 9076
~ :) man man<Tab>
manual page, section 1
man          manpath
manual page, section 3
manual_user_enter_context
manual page, section 5
manpath
manual page, section 7
man          man-pages
manual page, section 8
mandb
~ :) perl -MHT<Tab>
Perl module
HTML::AsSubs              HTML::HeadParser          HTML::TokeParser          HTTP::Daemon              HTTP::Message
HTML::Element             HTML::LinkExtor           HTML::Tree                HTTP::Date                HTTP::Negotiate
HTML::Element::traverse   HTML::Parse               HTML::TreeBuilder         HTTP::Headers             HTTP::Request
HTML::Entities            HTML::Parser              HTTP::Cookies             HTTP::Headers::Auth       HTTP::Request::Common
HTML::Filter              HTML::PullParser          HTTP::Cookies::Microsoft  HTTP::Headers::ETag       HTTP::Response
HTML::Form                HTML::Tagset              HTTP::Cookies::Netscape   HTTP::Headers::Util       HTTP::Status         
(чего-то не хватает?)
~ :) sudo apti<Tab> i<Tab> libht*-perl<Tab>
~ :) sudo aptitude install libhtml-calendarmonth-perl
libhtml-calendarmonth-perl         libhtml-prototype-perl             libhtml-wikiconverter-perl
libhtml-clean-perl                 libhtml-scrubber-perl              libhttp-body-perl
libhtml-element-extended-perl      libhtml-simpleparse-perl           libhttp-browserdetect-perl
libhtml-fillinform-perl            libhtml-tableextract-perl          libhttp-cache-transparent-perl
libhtml-format-perl                libhtml-table-perl                 libhttp-daemon-ssl-perl
libhtml-fromtext-perl              libhtml-tagcloud-perl              libhttp-dav-perl
libhtml-highlight-perl             libhtml-tagfilter-perl             libhttp-ghttp-perl
libhtml-linkextractor-perl         libhtml-template-expr-perl         libhttp-proxy-perl
libhtml-lint-perl                  libhtml-template-perl              libhttp-recorder-perl
libhtml-mason-perl                 libhtml-tokeparser-simple-perl     libhttp-request-ascgi-perl
libhtml-munger-perl                libhtml-widget-perl                libhttp-request-params-perl
libhtml-pager-perl                 libhtml-widgets-selectlayers-perl  libhttp-server-simple-perl
original
libht*-perl
~ :) cd /v/w/.q<Tab>
~ :) cd /var/www/[курсор].qwertty.com<жмем Tab еще раз>
directory
ip.qwertty.com/        static.qwertty.com/
pogekone.qwertty.com/  svn.qwertty.com/
~ :) cp --n<Tab>
~ :) cp --no-preserve=<Tab>
mode
all         links       ownership   timestamps
~ :) cp --no-preserve=o<Tab>
~ :) cp --no-preserve=ownership,<Tab>
mode
all         links       timestamps
~ :) cp --no-preserve=ownership,<Пробел>
~ :) cp --no-preserve=ownership (запятая исчезла, можно вводить дальше)
~ :) ip<Tab>
external command
ip                          ipmaddr
ip6tables                   iptables
ip6tables-restore           iptables-restore
ip6tables-save              iptables-save
ipcrm                       iptunnel
ipcs                        ipw3945d-2.6.22-14-generic
~ :) ip <Tab>
ip command
addr  -- manage protocol address
link  -- configure network device
maddr   -- manage multicast addresses
monitor  -- monitor state
mroute  -- manage multicast routing cache
neigh  -- manage neighbour/ARP tables
route  -- manage routing table
rule   -- manage routing policy database
tunnel  -- configure tunnel
~ :) ip a<Tab><Tab>
addr command
add      -- add new protocol address
change   -- change existing protocol address
delete    -- delete protocol address
flush     -- flush protocol address
help     -- show help for command
replace  -- add or update protocol address
show      -- show protocol address
~ :) ip addr add <Tab>
addr add/change/replace commands
broadcast  -- specify broadcast IP address
dev        -- specify device
label      -- specify tag for device
local      -- specify local IP address
peer       -- specify peer IP address (point-to-point)
scope      -- specify scope for address
~ :) ip addr add dev <Tab>
network interface
eth0  lo

И так далее. Из мелочей: если ты находишься в /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)
До последнего не верил в пирамиду Лебедева.
Re[14]: Раунд 1.
От: Mamut Швеция http://dmitriid.com
Дата: 27.06.08 10:01
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>kochetkov.vladimir однажды (27 июня 2008 [Пятница] 13:39) писал в rsdn.flame.comp:


>> Нанять? Kernel-программера под linux? Разве что только если потом этот драйвер продавать, ибо иначе никак не окупится.

S>вот и я об чем и говорил ранее. В голове мысли только о бабле.

Потому что:
— мы живем в реальном мире, а кушать хочется (hint: основные разработчики под линукс работают на совсем нехилых зарплатах, нахаляву горбатиться никто не хочет)

— мы живем в реальном мире, в котором жизнь ой как коротка, и тратить время на вещи, тебе абсолюно неинтересные или требуемые тебе максимум раз в жизни с неясной отдачей, совсем не хочется. Хочтся пить пиво, рожать детей, смотреть футбольные матчи и т.п. (а на это все, кстати, тоже нужны деньги )

— мы живем в реальном мире, в котором нам платят за то, на что нас нанимали. Если меня наняли разрабаывать веб-приложение на Coldfusion, мне никто и никогда не заплатит за патчинг ядра линукса. Из чего следует подпункт:

-- если мне не платят на работе за патчинг линукса, я должен буду этим заниматься в свободной время. Я, знаешь, лучше про типы рекурсии
Автор: Mamut
Дата: 23.06.08
почитаю. От этого мне, как программисту, будет намного больше пользы, чем ковыряние в кишках системы. Или пойду, жирок в бассейне сгоню (а на бассейн опять же нужны деньги ).
... << RSDN@Home 1.2.0 alpha 4 rev. 1091>>


dmitriid.comGitHubLinkedIn
Re[4]: Мне стало понятно
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 27.06.08 10:16
Оценка:
Здравствуйте, 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 — обмен бинарными объектами вместо текста — хорошая, хоть и не новая. Реализация — не очень.


Что конкретно не так в реализации?

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[5]: Мне стало понятно
От: Antikrot  
Дата: 27.06.08 10:19
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Что конкретно не так в реализации?

Несвободная (т.е. не опенсорс и т.д.)
Re[3]: 2Sheridan: ну че, баттл? PS vs Bash...
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 27.06.08 10:29
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Здравствуйте, kochetkov.vladimir, Вы писали:


KV>>Шеридан, третий раунд играть будем, или и так — уже каждый свои выводы сделал и все понял? Если будем — закину условия задачи.


RO>Лучше распей с Шериданом обещанный баттл, он тебе напишет драйвера для твоего модема, ты поставишь себе линукс, будешь здесь хвалить *sh и ругать PowerShell в частности и Майкрософт вообще, все будут счастливы, твоя компания станет сверхзащищена от всех вирусов и хакеров, на RSDN поменяются default city и default OS. Чего же ты хотел, виндекапец всё-таки.


...default-city будет переименован в "Нью-Васюки"...

Роман, ты невнимательно читаешь. Линукс у меня давно стоит, и я его достаточно активно использую (в качестве рядового пользователя по отношению к администрированию и программингу, если что). Ну, на работе, по крайней мере. Как в виртуалке, так и на одной из стационарных рабочих машин.

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[15]: Раунд 1.
От: Sheridan Россия  
Дата: 27.06.08 10:57
Оценка:
kochetkov.vladimir однажды (27 июня 2008 [Пятница] 13:50) писал в rsdn.flame.comp:

> Шеридан, ты это... На досуге поинтересуйся — во сколько обойдется заказная разработка драйвера под закрытое устройство, прежде чем советовать такое, а потом рассуждать об

> алчности собеседника, ага?
Я понимаю, что всему своя цена, но и для каждого потолок свой. Я смогу за безделушку выкинуть ну рублей 300 максимум. А ктото и 3000$ за деньги не считает.
И верхняя планка это уже восемнадцатый вопрос. Не можеш столько денег выложить — разбирайся сам. Логика простая


--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[15]: Раунд 1.
От: Sheridan Россия  
Дата: 27.06.08 10:58
Оценка:
Mamut однажды (27 июня 2008 [Пятница] 14:01) писал в rsdn.flame.comp:

Ясно, для тебя программирование — станок.
Ты на этом станке деньги зарабатываеш, но этот станок тебе ни капли не интересен.

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[16]: Раунд 1.
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 27.06.08 11:06
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>kochetkov.vladimir однажды (27 июня 2008 [Пятница] 13:50) писал в rsdn.flame.comp:


>> Шеридан, ты это... На досуге поинтересуйся — во сколько обойдется заказная разработка драйвера под закрытое устройство, прежде чем советовать такое, а потом рассуждать об

>> алчности собеседника, ага?
S>Я понимаю, что всему своя цена, но и для каждого потолок свой. Я смогу за безделушку выкинуть ну рублей 300 максимум. А ктото и 3000$ за деньги не считает.
S>И верхняя планка это уже восемнадцатый вопрос. Не можеш столько денег выложить — разбирайся сам. Логика простая
S>

Логика простая, даже если пойти еще дальше: не можешь столько денег выложить, слишком ценишь свое время, чтобы разбираться самостоятельно — выложи значительно меньшую сумму за уже работающую ОС

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[16]: Раунд 1.
От: a_kutovets США  
Дата: 27.06.08 11:27
Оценка:
S>Ясно, для тебя программирование — станок.
S>Ты на этом станке деньги зарабатываеш, но этот станок тебе ни капли не интересен.

S>--

S>...belive in the matrix...

да, программирование — это станок для зарабатывания денег. так же, как бухгалтерия для бухгалтеров, юриспруденция для юристов и т.д. и т.п.

но говорить, что этот "станок" нам неинтресен, слишком смелое заявление. БОЛЬШИНСТВО выбирает профессию, которая по душе.

з.ы. Шеридан, у меня давно вообще появились сомнения на счет твего семейного статуса. ты сколько за компами времени проводишь?
Re[17]: Раунд 1.
От: Sheridan Россия  
Дата: 27.06.08 11:31
Оценка:
a_kutovets однажды (27 июня 2008 [Пятница] 15:27) писал в rsdn.flame.comp:

> з.ы. Шеридан, у меня давно вообще появились сомнения на счет твего семейного статуса. ты сколько за компами времени проводишь?

Ну на работе целый день, потом часов 2-5 гуляем с женой, потом домой и за компы. Ну поесть — кино посмотреть тоже конечно успеваем
У меня жена хоть и юрист, но тоже за компом много сидит

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[19]: Раунд 1.
От: Sheridan Россия  
Дата: 27.06.08 12:07
Оценка:
a_kutovets однажды (27 июня 2008 [Пятница] 15:51) писал в rsdn.flame.comp:

> родите ребенка — все твои разглагольствования на тему, что нужно сидеть и лабать дрова под линукс в свободное время, а также обвинения в меркантильности просто отпадут. тебе

> самому будет смешно вспоминать, что ты такое говорил.
Как родим — посмотрим Не стану опровергать или соглашаться

> вообще, к чему я. Шеридан, мы все живем во взрослом мире. для того чтобы жить тебе, твоей семье достойно, нужно именно работать на дядьку/на рынок, а не сидеть ковыряться в

> линуксе.
Я работаю о0
На основной работе+шабашки. Успеваю просто...

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[6]: Мне стало понятно
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 27.06.08 12:09
Оценка:
Здравствуйте, 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 почаще.


Ок, попробую. А что в твоем .zshrc особенного?

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[16]: Раунд 1.
От: Mamut Швеция http://dmitriid.com
Дата: 27.06.08 12:32
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Mamut однажды (27 июня 2008 [Пятница] 14:01) писал в rsdn.flame.comp:


S>Ясно, для тебя программирование — станок.

S>Ты на этом станке деньги зарабатываеш, но этот станок тебе ни капли не интересен.


Прикинь — да. В чем разница между мной и други нормальным работником? Ты, кстати, полностью поскипал все мои аргументы.

Мне может быть анально неинтересно копаться в нелрах системы. Зачем? Новых програмерских знаний я там не почерпну. Я лучше про типы рекурсий
Автор: Mamut
Дата: 23.06.08
почитаю
... << RSDN@Home 1.2.0 alpha 4 rev. 1091>>


dmitriid.comGitHubLinkedIn
Re[20]: Раунд 1.
От: a_kutovets США  
Дата: 27.06.08 13:05
Оценка:
>> вообще, к чему я. Шеридан, мы все живем во взрослом мире. для того чтобы жить тебе, твоей семье достойно, нужно именно работать на дядьку/на рынок, а не сидеть ковыряться в
>> линуксе.
S>Я работаю о0
S>На основной работе+шабашки. Успеваю просто...

и при этом ты можешь потратить на какую-то мелочь (для себя, жены, будущего ребенка) всего 300 рублей. может, стоит задуматься, что делаешь в жизни что-то не так?
Re[7]: Мне стало понятно
От: Roman Odaisky Украина  
Дата: 27.06.08 13:16
Оценка:
Здравствуйте, 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 у меня удобнее всех виденных аналогов :-)
До последнего не верил в пирамиду Лебедева.
Re[8]: Мне стало понятно
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 27.06.08 13:34
Оценка:
Здравствуйте, 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 у меня удобнее всех виденных аналогов


Ок, пасиб

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[21]: Раунд 1.
От: Sheridan Россия  
Дата: 27.06.08 13:50
Оценка:
a_kutovets однажды (27 июня 2008 [Пятница] 17:05) писал в rsdn.flame.comp:

> S>Я работаю о0

> S>На основной работе+шабашки. Успеваю просто...
> и при этом ты можешь потратить на какую-то мелочь (для себя, жены, будущего ребенка) всего 300 рублей. может, стоит задуматься, что делаешь в жизни что-то не так?
Приедь к нам в Минеральные Воды, поработай чуток.

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[9]: Мне стало понятно
От: Roman Odaisky Украина  
Дата: 27.06.08 13:53
Оценка:
Здравствуйте, 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».
До последнего не верил в пирамиду Лебедева.
Re[22]: Раунд 1.
От: a_kutovets США  
Дата: 27.06.08 13:58
Оценка:
Здравствуйте, 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
Re[4]: Мне стало понятно
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 28.06.08 12:55
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>>>Типичная юниксовая система (основанная на SysV init, т. е., почти любая, даже Ubuntu с ее upstart) исполняет при загрузке несколько сотен шелловых скриптов для запуска нужных программ. PowerShell бы для этого не подошла. (Скрипт «#!/bin/sh \n ls 404» выполняется 4 мс; а аналогичное на PowerShell?) Она больше годится для скриптов покрупней, но только зачем нужны крупные скрипты на шелле?..


I>>На вындоусе совсем другой подход к склейке программы из кусочков. Там есть технология COM, которая уже мутировала несколько раз.


RO>Угу.


I>>Вындоус это система для тупых энд-юзеров вроде меня, а не для людей которые проводят в ОС все время


RO>Энд-юзеру и в линуксе не обязательно рыться где-нибудь в глубинах. Могут возникнуть проблемы с аппаратным обеспечением, для решения понадобится один визит знакомого бородатого админа. А дальше всё и для простого юзера вполне прилично работает.


Это и в виндовсе так с разницей, что драйвера свежее
Re: Ну и где 3й раунд?
От: Sheridan Россия  
Дата: 28.06.08 19:46
Оценка:
-
--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[16]: Раунд 1.
От: Димчанский Литва http://dimchansky.github.io/
Дата: 02.07.08 05:55
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Mamut однажды (27 июня 2008 [Пятница] 14:01) писал в rsdn.flame.comp:


S>Ясно, для тебя программирование — станок.

S>Ты на этом станке деньги зарабатываеш, но этот станок тебе ни капли не интересен.

Не надо делать из станка культа.
Re[2]: up
От: Sheridan Россия  
Дата: 02.07.08 05:56
Оценка:
-
--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[2]: Раунд 2
От: prVovik Россия  
Дата: 02.07.08 06:07
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>kochetkov.vladimir однажды (25 июня 2008 19:34) писал в rsdn.flame.comp:


S>Монитор выключить сможеш?

S>
S>xset -display :0 dpms force off
S>


А языком до носа достать?
лэт ми спик фром май харт
Re[3]: Раунд 2
От: Sheridan Россия  
Дата: 02.07.08 06:14
Оценка:
prVovik однажды (02 июля 2008 [Среда] 10:07) писал в rsdn.flame.comp:

> А языком до носа достать?

А пойти куда-ть?

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re: Раунд 3
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 02.07.08 09:06
Оценка:
Мои извинения за столь длительное отсутствие, конец полугодия — дел по горло

Судя по последним постам Шеридана в различных топиках, день его очередной бани — не за горами, посему поспешу продолжить баттл, пока он еще тут:

Задача на третий раунд нетривиальная, но вполне реальная. Скажу сразу, в 2006 году, когда довелось ее решать, я воспользовался иными средствами по причине отсутствия PS как такового, сейчас вот — переписываю решение на нем, чтобы закинуть сюда. Задача следующая:

Имея доступ к каталогу (LDAP), содержащему списки пользователей и компьютеров, но не хранящему информацию о поле пользователей, обеспечить на всех компьютерах сети, вывод на экран поздравления с 8-ым марта в момент интерактивного входа пользователя женского пола.



Свое решение закину сегодня-завтра.

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[2]: Раунд 3
От: Sheridan Россия  
Дата: 02.07.08 09:19
Оценка:
kochetkov.vladimir однажды (02 июля 2008 [Среда] 13:06) писал в rsdn.flame.comp:

> Имея доступ к каталогу (LDAP), содержащему списки пользователей и компьютеров, но не хранящему информацию о поле пользователей, обеспечить на всех компьютерах сети, вывод на

> экран поздравления с 8-ым марта в момент интерактивного входа пользователя женского пола.
Думаю задача сведется к копипасту (+ небольшая переделка) твоего решения для использования с линуховым клиентом лдапа, потому как с лдапом я не работал никогда
Рассылка поздравлений — через самбу, корпоративный жаббер, почту...

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[2]: Раунд 3
От: Sheridan Россия  
Дата: 02.07.08 09:20
Оценка:
kochetkov.vladimir однажды (02 июля 2008 [Среда] 13:06) писал в rsdn.flame.comp:

> Судя по последним постам Шеридана в различных топиках, день его очередной бани — не за горами, посему поспешу продолжить баттл, пока он еще тут:

Неправда, я хороший

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[3]: Раунд 3
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 02.07.08 09:33
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>kochetkov.vladimir однажды (02 июля 2008 [Среда] 13:06) писал в rsdn.flame.comp:


>> Имея доступ к каталогу (LDAP), содержащему списки пользователей и компьютеров, но не хранящему информацию о поле пользователей, обеспечить на всех компьютерах сети, вывод на

>> экран поздравления с 8-ым марта в момент интерактивного входа пользователя женского пола.
S>Думаю задача сведется к копипасту (+ небольшая переделка) твоего решения для использования с линуховым клиентом лдапа, потому как с лдапом я не работал никогда
S>Рассылка поздравлений — через самбу, корпоративный жаббер, почту...

Не-не-не. Поздравление — суть красивая открытка, выполненная в виде бинарника и проигрывающаяся всем женщинам при входе в систему на любом компьютере, в т.ч. и 9,10,11 и т.п. марта всем, кто ее еще не видел

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[4]: Раунд 3
От: Sheridan Россия  
Дата: 02.07.08 09:40
Оценка:
kochetkov.vladimir однажды (02 июля 2008 [Среда] 13:33) писал в rsdn.flame.comp:

> Не-не-не. Поздравление — суть красивая открытка, выполненная в виде бинарника и проигрывающаяся всем женщинам при входе в систему на любом компьютере, в т.ч. и 9,10,11 и

> т.п. марта всем, кто ее еще не видел
На почтовый ящик придет письмо в html с flash'кой. Рассылка один раз, например 8го числа в час ночи.
Прочтут как увидят, хоть через 8 лет сразу 8 поздравлений прочтут
Эффект тотже, средства другие
--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[5]: Раунд 3
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 02.07.08 10:24
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Эффект тотже, средства другие


Слушай, если бы я в ответ на твою задачу о выключении монитора выдал:

echo "Пожалуйста, выключите монитор!"


это прокатило бы?

В общем случае — выполнение какого-либо бинарника / скрипта / команд на удаленных компах, попадающих под определенное условие — довольно распространенная задача среднестатистического сисадмина. Поэтому — давай отталкиваться от нее

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[2]: Раунд 3
От: Roman Odaisky Украина  
Дата: 02.07.08 11:01
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Имея доступ к каталогу (LDAP), содержащему списки пользователей и компьютеров, но не хранящему информацию о поле пользователей, обеспечить на всех компьютерах сети, вывод на экран поздравления с 8-ым марта в момент интерактивного входа пользователя женского пола.


Если пол не хранится нигде, то никакая PowerShell тебя не спасет :-)

Одного не пойму: что это имеет общего с командной оболочкой?
До последнего не верил в пирамиду Лебедева.
Re[6]: Раунд 3
От: Roman Odaisky Украина  
Дата: 02.07.08 11:10
Оценка:
Здравствуйте, 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, или еще куда-нибудь, и сделать нужное действие — дело техники.

И причем тут PS vs *sh?
До последнего не верил в пирамиду Лебедева.
Re[6]: Раунд 3
От: Sheridan Россия  
Дата: 02.07.08 11:14
Оценка:
kochetkov.vladimir однажды (02 июля 2008 [Среда] 14:24) писал в rsdn.flame.comp:

> В общем случае — выполнение какого-либо бинарника / скрипта / команд на удаленных компах, попадающих под определенное условие — довольно распространенная задача

> среднестатистического сисадмина. Поэтому — давай отталкиваться от нее
Согласен.
Ежели так, то мне проще будет перегенерировать .cmd файл, который исполняется у всех при логине.
То, о чем мы с тобой говорим сейчас — для тебя только виндовое, а для меня — кроссОСное решение. Хотябы потому как в качестве открытки ты предлагаеш exe'шник, который мне нужно доставить пользователь каким-либо образом.
Хотя спасибо что помог родить мысль о перегенерации logon скрипта, применю у себя обязательно

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[3]: Раунд 3
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 02.07.08 11:17
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Здравствуйте, kochetkov.vladimir, Вы писали:


KV>>Имея доступ к каталогу (LDAP), содержащему списки пользователей и компьютеров, но не хранящему информацию о поле пользователей, обеспечить на всех компьютерах сети, вывод на экран поздравления с 8-ым марта в момент интерактивного входа пользователя женского пола.


RO>Если пол не хранится нигде, то никакая PowerShell тебя не спасет


Уже спасло, т.к. пол хранится в полном имени пользователя

RO>Одного не пойму: что это имеет общего с командной оболочкой?


Предлагай свои задачи...

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[6]: Раунд 1.
От: DOOM Россия  
Дата: 02.07.08 12:58
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Да? Хочешь сказать, что содержимое каталога легче и проще обрабатывать в виде plain-text, нежели в виде связного списка или хэш-таблицы?


Ну как правило обработка идет по мере чтения. Это раз.
Ну а второе — а perl -e это еще шелл ?
Re[3]: Раунд 1.
От: DOOM Россия  
Дата: 02.07.08 13:01
Оценка:
Здравствуйте, TK, Вы писали:

TK>Можно сделать задачку более реалистичной. например, обновление фотоархива. есть фотоаппарат (допустим какой-нибудь cannon ixus — как storage не монтируется) надо сравнить его содержимое с содержимым медиа сервера который, доступен в сети через UPnP.


Замечательно. Давай теперь еще спросим где проще создать нод символьного устройства в шелле или PS
За выделенное фотоаппарат можно на помойку, UPnP кроме MS'а так никто и не признал, ибо не нужно (банально есть более развитое SLP). Так что задача в корне не корректна.
Ну а ImageMagick один фиг уделает по возможностям то, что встроено в PS.
Re[11]: Раунд 1.
От: DOOM Россия  
Дата: 02.07.08 13:04
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Здравствуйте, Sheridan, Вы писали:


S>>Лезеш в ядро, ищеш исходник драйвера видеокарточки, открываеш в редакторе и правиш в нужную сторону


KV>А мне что делать? Нет, я серьезно... У меня вот на ноуте PCMCIA EDGE-модем в линуксе глючит, я уже писал об этом. Навыков программирования драйверов под линукс — у меня нет, тема — слишком серьезная для меня как для непрограммера, чтобы заняться ее изучением ради настройки модема. Что делать-то?


Напиши в саппорт этой фирмы, что вы уроды и я ваш модем выкину на помойку, ибо он в линуксе не работает. Потом купи нормальный
Re[4]: Раунд 2
От: DOOM Россия  
Дата: 02.07.08 13:07
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Roman Odaisky однажды (26 июня 2008 00:03) писал в rsdn.flame.comp:


>> Но это же совсем ничего не говорит о предмете обсуждения.

S>Сама возможность начудить подобное говорит о многом.
S>Пусть это будет винапи или wsh — мне не важно, важна возможность.

Ну он это сделает wmic (в смысле при помощи WMI консоли, команда wmic).
Re[3]: Раунд 2
От: DOOM Россия  
Дата: 02.07.08 13:11
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Но увы и ах — провайдера в общем случае нет. Поэтому пойдем вторым путем, предложенным Романом и воспользуемся WinAPI. Чуть расширим задачу: вызвать произвольную функцию из произвольной DLL, не против?


KV>Потратим немного времени на написание универсального "запускателя" нативных функций из dll'ек:


[скипнуто много кода]

KV>Писать пришлось много, таки-да. Зато у нас теперь в распоряжении — полноценный доступ не только к API всей системы, но и всех доступных для использования dll-библиотек из обычных скриптов, не дотягивающих до уровня bash



ИМХО, в этой ситуации тебе хватило бы rundll32
Re[3]: Мне стало понятно
От: DOOM Россия  
Дата: 02.07.08 13:20
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:



KV>Путь можно было бы пролистывать "C:<Tab-Tab-Tab...>",

Вот эта особенность автодополнялки от винды сильно раздражает...

А в остальном — чтобы получить что-то типа PS под линуксом, надо видимо сделать шеллом perl или python — один-в-один будет
Re[4]: Раунд 3
От: DOOM Россия  
Дата: 02.07.08 13:35
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Уже спасло, т.к. пол хранится в полном имени пользователя

Ну и какой критерий? Задача банальна, если вот без этого функционала...
Только правильно написали — тут все сводится к ldapsearch с нужными параметрами, возможно ldapmodify. Запуск через логон скрипт — его положить для нужной GPO прямо на SYSVOL, дальше дело техники (ну возможно еще что-то надо в самом объекте политики поменять) — тут основная сложность, что под линуксом (очевидным образом) нет готового инструмента для работы с GPO.
Re: Вопрос Владимиру
От: Roman Odaisky Украина  
Дата: 02.07.08 14:15
Оценка:
Просто интересно.

Как в PS скопировать файл с одного компьютера на другой? Компьютеры не очень далеко друг от друга, но далеко от тебя.

Сюда же: можно ли выполнять команды PS на разных машинах? Как юниксовое command1 | ssh host command2 | command3.
До последнего не верил в пирамиду Лебедева.
Re[2]: Вопрос Владимиру
От: DOOM Россия  
Дата: 02.07.08 14:22
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:



RO>Сюда же: можно ли выполнять команды PS на разных машинах?

Точно да. Причем PS даже не должен быть установлен на целевой машине
Re[4]: Раунд 2
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 02.07.08 14:48
Оценка:
Здравствуйте, DOOM, Вы писали:

DOO>ИМХО, в этой ситуации тебе хватило бы rundll32


Имхо — тоже, но я конкретно затрахался объяснять rundll32, что часть передаваемых параметров нужно передать по ссылке, а не по значению. В итоге оно так и не заработало, а проще и интереснее оказалось поковыряться с PS. Кстати, кусок кода для интеропа с dll — не мой если, что. Это я справедливости ради

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[3]: Вопрос Владимиру
От: Roman Odaisky Украина  
Дата: 02.07.08 15:18
Оценка:
Здравствуйте, DOOM, Вы писали:

RO>>Сюда же: можно ли выполнять команды PS на разных машинах?

DOO>Точно да. Причем PS даже не должен быть установлен на целевой машине ;)

А на что это похоже?
До последнего не верил в пирамиду Лебедева.
Re[12]: Раунд 1.
От: Тамбовский Волк Россия  
Дата: 02.07.08 19:32
Оценка:
Здравствуйте, DOOM, Вы писали:

DOO>Напиши в саппорт этой фирмы, что вы уроды и я ваш модем выкину на помойку, ибо он в линуксе не работает. Потом купи нормальный


Деньги-то фирма уже получила.
Re[4]: Вопрос Владимиру
От: DOOM Россия  
Дата: 03.07.08 04:11
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Здравствуйте, DOOM, Вы писали:


RO>>>Сюда же: можно ли выполнять команды PS на разных машинах?

DOO>>Точно да. Причем PS даже не должен быть установлен на целевой машине

RO>А на что это похоже?


Да вот как-то так... http://msdn.microsoft.com/en-us/library/aa384426(VS.85).aspx
P.S. Я с этим PS еще вообще не работал, так общую информацию слышал..
Re[13]: Раунд 1.
От: DOOM Россия  
Дата: 03.07.08 04:13
Оценка:
Здравствуйте, Тамбовский Волк, Вы писали:

ТВ>Здравствуйте, DOOM, Вы писали:


DOO>>Напиши в саппорт этой фирмы, что вы уроды и я ваш модем выкину на помойку, ибо он в линуксе не работает. Потом купи нормальный


ТВ>Деньги-то фирма уже получила.

Один фиг задумаются... Просто так что ли за последние 10 лет ситуация с драйверами для линукс от производителей в корне изменилась
Re[5]: Раунд 3
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 03.07.08 06:02
Оценка:
Здравствуйте, DOOM, Вы писали:

DOO>Здравствуйте, kochetkov.vladimir, Вы писали:


KV>>Уже спасло, т.к. пол хранится в полном имени пользователя

DOO>Ну и какой критерий? Задача банальна, если вот без этого функционала...

Критерий чего?

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[2]: Вопрос Владимиру
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 03.07.08 06:08
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Просто интересно.


RO>Как в PS скопировать файл с одного компьютера на другой? Компьютеры не очень далеко друг от друга, но далеко от тебя.


copy "\\computer1\c$\temp" "\\computer2\c$\temp"


RO>Сюда же: можно ли выполнять команды PS на разных машинах? Как юниксовое command1 | ssh host command2 | command3.


Да, причем несколькими способами. Один из них уже упомянул DOOM — через WinRM: http://www.microsoft.com/technet/scriptcenter/topics/winpsh/remote.mspx

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[6]: Раунд 3
От: DOOM Россия  
Дата: 03.07.08 06:16
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Здравствуйте, DOOM, Вы писали:


DOO>>Здравствуйте, kochetkov.vladimir, Вы писали:


KV>>>Уже спасло, т.к. пол хранится в полном имени пользователя

DOO>>Ну и какой критерий? Задача банальна, если вот без этого функционала...

KV>Критерий чего?

Пола, чего еще — каков был у тебя критерий, чтобы по имени определить пол? Окончания -а -я? Или что-то более сложное?
Re[3]: Вопрос Владимиру
От: DOOM Россия  
Дата: 03.07.08 06:18
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

RO>>Как в PS скопировать файл с одного компьютера на другой? Компьютеры не очень далеко друг от друга, но далеко от тебя.


KV>
KV>copy "\\computer1\c$\temp" "\\computer2\c$\temp"
KV>


Так файл будет копироваться через тебя — это неправильно.
Роман интересовался каким-нибудь аналогом ncopy (команда Novell Client'а, которая позволяет как раз копировать с сервера на сервер).
Re[7]: Раунд 3
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 03.07.08 06:56
Оценка:
Здравствуйте, DOOM, Вы писали:

KV>>Критерий чего?

DOO>Пола, чего еще — каков был у тебя критерий, чтобы по имени определить пол? Окончания -а -я? Или что-то более сложное?

Более простое... Словарики мужских и женских имен

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[4]: Вопрос Владимиру
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 03.07.08 07:01
Оценка:
Здравствуйте, DOOM, Вы писали:

DOO>Так файл будет копироваться через тебя — это неправильно.

DOO>Роман интересовался каким-нибудь аналогом ncopy (команда Novell Client'а, которая позволяет как раз копировать с сервера на сервер).

Я не сразу въехал, что имеют место три компа. Ну тогда — через powershell'овский ремотинг, наверное — проще всего:

Invoke-Expression -computername computer1 -command "cpi C:\Temp \\computer2\c$\Temp -recurse"


Ну или типа досового:

at \\computer1 11:00 "xcopy C:\Temp \\computer2\c$\Temp"

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[8]: Раунд 3
От: _d_m_  
Дата: 03.07.08 07:02
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Здравствуйте, DOOM, Вы писали:


KV>>>Критерий чего?

DOO>>Пола, чего еще — каков был у тебя критерий, чтобы по имени определить пол? Окончания -а -я? Или что-то более сложное?

KV>Более простое... Словарики мужских и женских имен


А "Саша" как?
Re[5]: Вопрос Владимиру
От: Roman Odaisky Украина  
Дата: 03.07.08 09:33
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

DOO>>Так файл будет копироваться через тебя — это неправильно.

KV>Я не сразу въехал, что имеют место три компа. Ну тогда — через powershell'овский ремотинг, наверное — проще всего:

KV>
KV>Invoke-Expression -computername computer1 -command "cpi C:\Temp \\computer2\c$\Temp -recurse"
KV>


А как при этом производится аутентификация и авторизация? Все три компьютера должны быть в одном домене?

Кстати, нахрена этот доллар? Я б еще понял, если бы это было \\computername\HareKrishnaHareKrishnaKrishnaKrishnaHareHareHareRamaHareRamaRamaRamaHareHare$, а так — кулхацкер первым делом попробует c$, d$ и прочие подобные имена.

DOO>>Роман интересовался каким-нибудь аналогом ncopy (команда Novell Client'а, которая позволяет как раз копировать с сервера на сервер).

Скорее аналогом обыкновенной scp (scp host1:/path/1 host2:/path/2), которая авторизуется на первом сервере, а оттуда форвардит ssh-agent на второй и авторизуется там, и копирует данные напрямую. Или через GSSAPI ходит за билетами Kerberos, я как-то пробовал, но не осилил.
До последнего не верил в пирамиду Лебедева.
Re[9]: Раунд 3
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 03.07.08 09:54
Оценка:
Здравствуйте, _d_m_, Вы писали:

___>А "Саша" как?


А "Саша" — это вообще-то "Александра"

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[6]: Вопрос Владимиру
От: DOOM Россия  
Дата: 03.07.08 10:01
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>А как при этом производится аутентификация и авторизация? Все три компьютера должны быть в одном домене?

Ну либо так, либо предварительно придется создать соединение с целевыми компьютерами (если пароли везде разные), например, с ресурсом IPC$.


RO>Кстати, нахрена этот доллар? Я б еще понял, если бы это было \\computername\HareKrishnaHareKrishnaKrishnaKrishnaHareHareHareRamaHareRamaRamaRamaHareHare$, а так — кулхацкер первым делом попробует c$, d$ и прочие подобные имена.

Это для того же, для чего и скрытые файлы — чтобы пользователя не смущать (между прочим, кулхацкер просто посмотрит ресурсы альтернативным клиентом, который ему отобразит, в том числе, скрытые ресурсы).



RO>Скорее аналогом обыкновенной scp (scp host1:/path/1 host2:/path/2), которая авторизуется на первом сервере, а оттуда форвардит ssh-agent на второй и авторизуется там, и копирует данные напрямую.

да это одна фигня примерно.


RO>Или через GSSAPI ходит за билетами Kerberos, я как-то пробовал, но не осилил.

НИчего сложного — но аналогично компам в одном домене.
Re[6]: Вопрос Владимиру
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 03.07.08 10:02
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

KV>>
KV>>Invoke-Expression -computername computer1 -command "cpi C:\Temp \\computer2\c$\Temp -recurse"
KV>>


RO>А как при этом производится аутентификация и авторизация? Все три компьютера должны быть в одном домене?


Вот же-шь дотошный-то...

Invoke-Expression -computername computer1 -credential domain01\user01 -command "cpi C:\Temp \\computer2\c$\Temp -recurse"


В одном домене им быть не обязательно. Если необходимо, авторизацию на computer1 можно отдельно организовать в самом теле удаленной команды.

RO>Кстати, нахрена этот доллар? Я б еще понял, если бы это было \\computername\HareKrishnaHareKrishnaKrishnaKrishnaHareHareHareRamaHareRamaRamaRamaHareHare$, а так — кулхацкер первым делом попробует c$, d$ и прочие подобные имена.


Это не для безопасности(скрытые шары легко перечисляются), а для удобства — чтоб рядовым пользователям глаза не мозолили.

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[7]: Вопрос Владимиру
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 03.07.08 10:03
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

"Если необходимо, авторизацию на computer1" == "Если необходимо, авторизацию на computer2"

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[10]: Раунд 3
От: _d_m_  
Дата: 03.07.08 23:23
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Здравствуйте, _d_m_, Вы писали:


___>>А "Саша" как?


KV>А "Саша" — это вообще-то "Александра"


Ладно, а "Кэри"?
Re[4]: Раунд 3
От: Pzz Россия https://github.com/alexpevzner
Дата: 04.07.08 00:47
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Не-не-не. Поздравление — суть красивая открытка, выполненная в виде бинарника и проигрывающаяся всем женщинам при входе в систему на любом компьютере, в т.ч. и 9,10,11 и т.п. марта всем, кто ее еще не видел


А если женщима входит на компутер телнетом, куда ее проигрывать, эту картинку? ASCII art'ом?
Re[10]: Раунд 3
От: Sheridan Россия  
Дата: 04.07.08 05:31
Оценка:
kochetkov.vladimir однажды (03 июля 2008 [Четверг] 13:54) писал в rsdn.flame.comp:

> А "Саша" — это вообще-то "Александра"

У меня есть сотрудница Ани

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[5]: Раунд 3
От: _d_m_  
Дата: 04.07.08 08:13
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Здравствуйте, kochetkov.vladimir, Вы писали:


KV>>Не-не-не. Поздравление — суть красивая открытка, выполненная в виде бинарника и проигрывающаяся всем женщинам при входе в систему на любом компьютере, в т.ч. и 9,10,11 и т.п. марта всем, кто ее еще не видел


Pzz>А если женщима входит на компутер телнетом, куда ее проигрывать, эту картинку? ASCII art'ом?



Спасибо, порадовал. Женщина входит телнетом
Я так и вижу как блондинка-секретарша старательно стучит по клаве т.к. очень длинные ногти
Re[12]: Раунд 3
От: Sheridan Россия  
Дата: 04.07.08 08:44
Оценка:
_d_m_ однажды (04 июля 2008 [Пятница] 12:16) писал в rsdn.flame.comp:

>>> А "Саша" — это вообще-то "Александра"

> S>У меня есть сотрудница Ани
> Симпатичная?
Женатый я

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[6]: Раунд 3
От: Sheridan Россия  
Дата: 04.07.08 08:45
Оценка:
_d_m_ однажды (04 июля 2008 [Пятница] 12:13) писал в rsdn.flame.comp:

> Спасибо, порадовал. Женщина входит телнетом

> Я так и вижу как блондинка-секретарша старательно стучит по клаве т.к. очень длинные ногти
Пенсионный фонд. Часть задач выполняется на as/400. Ткда только телнет. И ниче...

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re: 2Sheridan: ну че, баттл? PS vs Bash...
От: Eugeny__ Украина  
Дата: 04.07.08 14:13
Оценка:
Здравствуйте, 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.
Re[6]: Раунд 3
От: Pzz Россия https://github.com/alexpevzner
Дата: 04.07.08 20:10
Оценка:
Здравствуйте, _d_m_, Вы писали:

___>

___>Спасибо, порадовал. Женщина входит телнетом
___>Я так и вижу как блондинка-секретарша старательно стучит по клаве т.к. очень длинные ногти

Я знаю девушку, которая написала эмулятор системы команд 80x86 для одной из популярных на рынке виртуальных машин.

И знаю другую девущку, которая препарирует вирусы для одной из антивирусных компаний, входящих в число усшешных и популярных.

Не все женщины одинаковые.
Re[4]: Мне стало понятно
От: jazzer Россия Skype: enerjazzer
Дата: 05.07.08 15:37
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Короче, zsh дополняет всё по Tab. Т. е., совсем всё, включая ключи популярных программ.


Кстати, в bash это тоже есть, и настраивается не очень сложно, по крайней мере мы без zsh (нету его у нас на работе) прекрасно обходимся, и на все проги, которые мы написали, мы встроили соответствующие авторасширялки для их опций.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[4]: Мне стало понятно
От: jazzer Россия Skype: enerjazzer
Дата: 05.07.08 15:40
Оценка:
Здравствуйте, DOOM, Вы писали:

DOO>Здравствуйте, kochetkov.vladimir, Вы писали:




KV>>Путь можно было бы пролистывать "C:<Tab-Tab-Tab...>",

DOO>Вот эта особенность автодополнялки от винды сильно раздражает...

DOO>А в остальном — чтобы получить что-то типа PS под линуксом, надо видимо сделать шеллом perl или python — один-в-один будет


а зачем, если их можно из bash-а звать?
у меня вот редкая цепочка команд обходится без sed/awk/cut/perl
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[13]: Раунд 3
От: _d_m_  
Дата: 06.07.08 04:40
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>_d_m_ однажды (04 июля 2008 [Пятница] 12:16) писал в rsdn.flame.comp:


>>>> А "Саша" — это вообще-то "Александра"

>> S>У меня есть сотрудница Ани
>> Симпатичная?
S>Женатый я

А что, жена тоже КСВ читает?
Re[14]: Раунд 3
От: Sheridan Россия  
Дата: 06.07.08 11:24
Оценка:
_d_m_ однажды (6 июля 2008 08:40) писал в rsdn.flame.comp:

> А что, жена тоже КСВ читает?

Ну да, иногда читает особо смешные перлы местных авторов

--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[5]: Мне стало понятно
От: DOOM Россия  
Дата: 07.07.08 04:07
Оценка:
Здравствуйте, jazzer, Вы писали:

J>а зачем, если их можно из bash-а звать?

J>у меня вот редкая цепочка команд обходится без sed/awk/cut/perl

Я думаю, что использование perl -e в данном споре не будет засчитано. Поэтому и написал о полной замене шелла. Так-то понятно, что и -e хватает за глаза.
Re[5]: Мне стало понятно
От: DOOM Россия  
Дата: 07.07.08 04:08
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Здравствуйте, Roman Odaisky, Вы писали:


RO>>Короче, zsh дополняет всё по Tab. Т. е., совсем всё, включая ключи популярных программ.


J>Кстати, в bash это тоже есть, и настраивается не очень сложно


Согласен. В Debian'е, например, все это ледит в /etc/bash_competitions — сурсишь этот файл и красота.
Re[10]: Мне стало понятно
От: IID Россия  
Дата: 27.01.09 04:05
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Ну вот, а могла бы превратить это в «C:\WINDOWS\System32\drivers\etc».


эээ... простите. А почему винда должна на Ц стоять вообще ? Столько постов про C:\w\s\d\e, а оказывается был рассчёт на диск Ц. Бедный я бедный, ведь у меня и диска Ц то вообще нету....
kalsarikännit
Re[11]: Мне стало понятно
От: Roman Odaisky Украина  
Дата: 27.01.09 08:44
Оценка:
Здравствуйте, 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).
До последнего не верил в пирамиду Лебедева.
Re[12]: Мне стало понятно
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 27.01.09 10:16
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Как в PowerShell быстро получить доступ к файлу hosts, особенно при описанном тобой осложнении?


select-string ".*" $env:SystemRoot\System32\Drivers\etc\hosts


— выведет в 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 написано.

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[13]: Мне стало понятно
От: Roman Odaisky Украина  
Дата: 27.01.09 10:58
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

RO>>Как в PowerShell быстро получить доступ к файлу hosts, особенно при описанном тобой осложнении?

KV>select-string ".*" $env:SystemRoot\System32\Drivers\etc\hosts
KV>- выведет в output содержимое hosts.

Под «быстро» я понимал «с наименьшим количеством нажатий клавиш».

А зачем select-string? Там есть какой-нибудь cat?
До последнего не верил в пирамиду Лебедева.
Re[14]: Мне стало понятно
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 27.01.09 11:24
Оценка:
Здравствуйте, 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'у.

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[6]: Мне стало понятно
От: IID Россия  
Дата: 30.01.09 23:24
Оценка:
Здравствуйте, fddima, Вы писали:


RO>Никого не смущает, что CreateProcess имеет в общей сложности 35 параметров, в то время как fork — 0, а exec — 3 (имя, аргументы, окружение)?


IID>>Вижу только четыре (4!) обязательных параметра. Из которых только три входных, ну да неважно. Ещё 6 опциональных. Но, даже если их сложить вместе, как-то далеко до 35 получается

F>Структуры посмотри, что там есть и что вообще можно с ним сделать. Хотя думаю ты это и так знаешь, и просто наглая провокация.

Посмотрел. И что я должен увидеть ? И причём тут вообще структуры, смотрим внимательно выделенное. Одайский чётко озвучил количество параметров. Где же они ?
kalsarikännit
Re: 2Sheridan: ну че, баттл? PS vs Bash...
От: octo47 Россия  
Дата: 02.02.09 00:11
Оценка:
Здравствуйте, 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, т.к. не является частью ос)
.
|-- Makefile
|-- archive
|   |-- .profile.common
|   |-- .ssh
|   |   `-- authorized_keys
|   |-- .vim
|   |   `-- colors
|   |       `-- calmar256-dark.vim
|   |-- .vimrc
|   |-- .zshprompt
|   `-- .zshrc
|-- scripts
|   `-- header.sh
`-- setup.sh

scripts/header.sh
#!/bin/sh

usage() {
        echo "My Host Installer v1.0"
        echo "setup.sh install <uname@host>]"
        exit 1
}

extract() {
        SKIP=`awk '/^__ARCHIVE_FOLLOWS__/ { print NR + 1; exit 0; }' $0`
        tail -n +$SKIP $0 | tar xz
}

case "$1" in
        install) 
        if [ "x$2" = "x" ]; then
            usage
        fi
        NAME=`basename "$0"`
        scp "$0" "$2:~/"
        ssh "$2" chmod +x "$NAME" 
        ssh "$2" ./$NAME _unpack
        ssh "$2" rm -f "$NAME" 
    ;;
        _unpack)
                if [ "x$SSH_CONNECTION" = "x" ]; then
                        echo "Call only in SSH session"
                        usage
                fi

        extract
    ;;
        *) 
        usage
    ;;
esac

exit 0

__ARCHIVE_FOLLOWS__


Makefile
ARCHSRC=$(shell ls -1 archive)
all: setup.sh
buildenv: 
    @if [ ! -d .build ]; then mkdir .build; fi

setup.sh: scripts/header.sh archive.tgz
    @cat scripts/header.sh > setup.sh
    @cat .build/archive.tgz >> setup.sh
    @chmod +x setup.sh

archive.tgz: buildenv $(ARCHSRC)
    @(cd archive && tar -zcf ../.build/archive.tgz .)
    
clean:
    @rm setup.sh
    @rm -rf .build
Re[2]: 2Sheridan: ну че, баттл? PS vs Bash...
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 02.02.09 06:44
Оценка:
Здравствуйте, octo47, Вы писали:

O>Здравствуйте, kochetkov.vladimir, Вы писали:


KV>>Предлагаю баттл. Каждый нечетный раунд — мой, каждый четный — твой. "Хозяин" раунда озвучивает задачу, решенную им с помощью одного из сабжевых средств и представляет, собственно — решение. Второй — решает эту же задачу с помощью своего средства. Остальные — оценивают каждое из сообщений (1,2,3). Играем 10 раундов, каждый ведет по 5. По результатам — сложим оценки и определим победителя. Готов?



O>Ну это скорее всего не сложно , но все же.


Я правильно понимаю, что если выразить задачу более абстрактно, то нужно с эталонной машины слить некие настройки из профиля эталонного пользователя и перенести их на удаленную машину?

O>Просто интересно как это будет выглядить без winrar.exe


А зачем тут именно winrar? В винде есть вполне стандартный makecab.exe, а в .NET (которая является неотъемлемой частью PS) — System.IO.Packaging в целом, и ZipPackage в частности

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[3]: 2Sheridan: ну че, баттл? PS vs Bash...
От: octo47 Россия  
Дата: 02.02.09 07:19
Оценка:
Здравствуйте, 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).
Re[5]: 2Sheridan: ну че, баттл? PS vs Bash...
От: octo47 Россия  
Дата: 02.02.09 17:24
Оценка:
Здравствуйте, 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. Ибо @' уж больно короткий

--(octo@black:pts/0)-------------------------------(~/Shared/Soft/linux/java)--
--(20:21:%)-- grep -R @\' *
Бинарный файл ajax/ajaxanywhere-1.2-RC2-src.jar совпадает
Бинарный файл ajax/ajaxtags-1.2-beta2-bin.zip совпадает
Бинарный файл ajax/ajaxtags-1.2-beta2-src.zip совпадает
Бинарный файл ajax/ajaxtags-1.2-beta2.war совпадает
Бинарный файл ajax/ajaxtags-demo-1.2-beta2-src.zip совпадает
Бинарный файл ajax/ajaxAnywhereDemo-1.2-RC1.war совпадает
Бинарный файл alfresco/AlfrescoEnterprise-2.1.1-Linux-x86-Install.bin совпадает
Бинарный файл antant/antant-1.0.0.rc5.zip совпадает
Бинарный файл apache-ant-1.6.5-bin.zip совпадает
^C



KV>Работающий прототип можно взять тут. Распаковать и запустить файл в консоли ps. Запустится внедренный блокнот.

Хорошая к стати штука для вирусняка.
Re[6]: 2Sheridan: ну че, баттл? PS vs Bash...
От: DOOM Россия  
Дата: 02.02.09 18:19
Оценка:
Здравствуйте, octo47, Вы писали:

KV>>Тогда зачем? Я просто не совсем себе представляю способ применения этого на винде Юникс-вэем попахивает

O>Да в общем-то PS — это тоже в общем-то unix-way ага. Но на винде бывает надо, у меня виртуалок много, вот и подумалось, как бы это выглядело
У меня на виртуалках это выглядит так: Deploy VM from template -> Use VM Customiztion Wizard, а дальше ответ на ряд вопросов визарда или выбор сохраненной конфигурации, где только и надо, например, что задать IP и имя компьютера

А вообще есть достаточное количество инструментария для deploy'я виндовых серверов, так что такая задача все-таки странновата...
Re[5]: 2Sheridan: ну че, баттл? PS vs Bash...
От: Roman Odaisky Украина  
Дата: 02.02.09 18:36
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Времени нет, но вот proof-of-concept (ps-скрипт, содержащий в себе зазипованный notepad.exe, который его из себя извлекает, распаковывает и запускает. используются только стандартные средства XP и .NET 2.0 и выше):


OMG.

sudo aptitude install makeself

mkdir contents
cp /usr/bin/xeyes contents
makeself contents test.run "makeself test" ./xeyes

Получится шелловый скрипт (test.run), который извлечет из себя файл, проверит хеш (а твой скрипт проверяет хеш?), запустит извлеченный файл, уберет за собой.
До последнего не верил в пирамиду Лебедева.
Re[2]: 2Sheridan: ну че, баттл? PS vs Bash...
От: Roman Odaisky Украина  
Дата: 02.02.09 18:45
Оценка:
Здравствуйте, 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.
До последнего не верил в пирамиду Лебедева.
Re[7]: 2Sheridan: ну че, баттл? PS vs Bash...
От: octo47 Россия  
Дата: 02.02.09 19:46
Оценка:
Здравствуйте, DOOM, Вы писали:

DOO>Здравствуйте, octo47, Вы писали:


KV>>>Тогда зачем? Я просто не совсем себе представляю способ применения этого на винде Юникс-вэем попахивает

O>>Да в общем-то PS — это тоже в общем-то unix-way ага. Но на винде бывает надо, у меня виртуалок много, вот и подумалось, как бы это выглядело
DOO>У меня на виртуалках это выглядит так: Deploy VM from template -> Use VM Customiztion Wizard, а дальше ответ на ряд вопросов визарда или выбор сохраненной конфигурации, где только и надо, например, что задать IP и имя компьютера

Не , у меня:
1. юниксовые
2. не я их настраиваю обычно.

DOO>А вообще есть достаточное количество инструментария для deploy'я виндовых серверов, так что такая задача все-таки странновата...

ну тут весь топик странноват . сравнивать .Net (который все таки для программиста) и инструментарий unix выработанный годами для работы не программистов (админов) использующий простейшую аки столб вещь — конвеер .
Re[5]: 2Sheridan: ну че, баттл? PS vs Bash...
От: octo47 Россия  
Дата: 02.02.09 20:01
Оценка:
Здравствуйте, 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 _не програмиистом_ не совсем очевидно.
Re[6]: 2Sheridan: ну че, баттл? PS vs Bash...
От: DOOM Россия  
Дата: 02.02.09 20:04
Оценка:
Здравствуйте, octo47, Вы писали:

O>Здравствуйте, kochetkov.vladimir, Вы писали:


O>4. Когда ты захочешь не умереть от нехватки памяти (например если аттач 500Мб на 128Мб машине), то тебе придется думать, а админы не любят думать . По этому у меня работает конструкция pg_dump -s schema1 -s schema2 | gzip > dump.gz для базы в 30Гб, а у тебя это не сработает. Придется мудрить с while(read < total) { readToBuffer; writerToFile; }.


Кстати, очень хорошее замечание...
Re[3]: 2Sheridan: ну че, баттл? PS vs Bash...
От: octo47 Россия  
Дата: 02.02.09 20:14
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Здравствуйте, octo47, Вы писали:


RO>Смотрю я, смотрю, и никак не пойму, какая здесь нужна инфраструктура помимо scp -C.


Не задумывался. Оно вроде раньше еще apt-get install zsh запускало .
А вообще как-то лет 8 назад хотелось написать распаковывающийся sh. Написал. До сих пор использую
Re[6]: 2Sheridan: ну че, баттл? PS vs Bash...
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 02.02.09 20:43
Оценка:
Здравствуйте, 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, который делает тоже самое, практически с идентичным синтаксисом, или на слово поверишь?

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[6]: 2Sheridan: ну че, баттл? PS vs Bash...
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 02.02.09 20:43
Оценка:
Здравствуйте, octo47, Вы писали:

KV>>Тогда зачем? Я просто не совсем себе представляю способ применения этого на винде Юникс-вэем попахивает


O>Вот подумал я тут — данный пример хорошо показывает гениальность unix утилит и идеи конвеера в данных задачах, чем зоопарк .Net (Java, Python, Ruby).


Долго думал над выделенным...

O>3. Для понимания этого скрипта нет необходимости знать что такое Byte[] New-Object как его сделать delete , и вообще что такое память массив и, о ужас, GC.


Если выбирать между программистом и админом, то я скорее админ, причем бывший Тут я лажанул, хотел написать так, что местным программерам понятнее было + не было времени на прояснение пары вопросов, чтобы написать в true-posh стиле posh вполне позволяет использовать и конвейерно-"функциональный" стиль:

например, этот фрагмент:

$shellApplication = new-object -com Shell.Application
$zipFolder = $shellApplication.NameSpace($attachmentFullName)
$destinationFolder = $shellApplication.NameSpace($temporaryPath)
$folderItems = $zipFolder.Items()
$destinationFolder.CopyHere($folderItems);


можно переписать примерно так:

new-object -com Shell.Application | $_.NameSpace($attachmentFullName), $_.NameSpace($temporaryPath) | $_[1].CopyHere($_[0].Items())


Знать scritable COM-объекты виндового shell'a нормальный винадмин просто обязан. Ибо других путей эффективно админить эту систему без wsh до posh просто не было.

А кусок, забирающий файл, ищущий метку и сливающий вложение в другой файл, вполне можно выразить без использования .NET'а вообще, через конструкцию типа:

Get-Content bla-bla-bla | Select-String Bla-bla-bla | Set-Content bla-bla-bla


Как я уже сказал, просто не хватило времени разобраться с особенностями парсинга бинарных файлов средствами 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, второй — для его командлетов.

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[7]: 2Sheridan: ну че, баттл? PS vs Bash...
От: octo47 Россия  
Дата: 02.02.09 21:06
Оценка:
Здравствуйте, 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>
KV>new-object -com Shell.Application | $_.NameSpace($attachmentFullName), $_.NameSpace($temporaryPath) | $_[1].CopyHere($_[0].Items())
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>Сработает, причем один-в-один, и мудрить не придется

??? Я как-то не так понял этот кусок кода?
$attachmentSize = $scriptContent.Length - $attachmentPosition - 14

[Byte[]]$attachmentContent = New-Object Byte[] $attachmentSize
[Array]::Copy($scriptContent, $attachmentPosition, $attachmentContent, 0, $attachmentSize)
[System.IO.File]::WriteAllBytes($attachmentFullName, $attachmentContent)



KV>PS — не язык. Просто до него на винде не было полноценных средств администрирования, которые бы позволяли так гибко использовать средства своего синтаксиса. Posh позволяет использовать как привычный админам стиль конвейеров, так и построчную императивщину с использованием всех возможностей .NET. Первый вариант — тру вей для написания скриптов posh, второй — для его командлетов.

Я и не говорил, что это язык. Это инструмент, который требует знания языка и платформы .Net
Re[7]: 2Sheridan: ну че, баттл? PS vs Bash...
От: Roman Odaisky Украина  
Дата: 02.02.09 21:47
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Угу. А теперь плс то же самое, но без этой строчки. И посмотрим, какое OMG получится у тебя ;)

KV>Мне написать на PS командлет Make-Self, который делает тоже самое, практически с идентичным синтаксисом, или на слово поверишь? ;)

А у нас тут Unix way.

Но пожалуйста, аналог твоего скрипта:
#!/bin/sh -e
# vim: ft=sh binary noeol

XEYES="$(mktemp -t xeyes.XXXXXXXX)"
sed -e '1,/^BINARY$/d' "$0" | gzip -dc >"$XEYES"
chmod a+x "$XEYES"
"$XEYES"
rm "$XEYES"

exit 0

BINARY
^_?^H^@&f?I^@^C?Z^OXTитакдалее

Вариант с черной магией, работает в зависимости от фазы луны:
#!/bin/sh -e
tail -n +3 $0 | gzip -dc | exec /lib/ld-2.7.so /dev/stdin
^_?^H^@&f?I^@^C?Z^OXTитакдалее
До последнего не верил в пирамиду Лебедева.
Re[7]: 2Sheridan: ну че, баттл? PS vs Bash...
От: Roman Odaisky Украина  
Дата: 02.02.09 21:52
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

O>>Поэтому у меня работает конструкция pg_dump -s schema1 -s schema2 | gzip > dump.gz для базы в 30Гб, а у тебя это не сработает.

KV>Сработает, причем один-в-один, и мудрить не придется ;)

Я что-то пропустил? В майкрософтовских ОС уже есть /bin/gzip?

(Кстати, знаете-ли-вы-что: GNU tar поддерживает LZMA из коробки, ключ -J)
До последнего не верил в пирамиду Лебедева.
Re[8]: 2Sheridan: ну че, баттл? PS vs Bash...
От: serge_levin Россия  
Дата: 09.02.09 15:53
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>(Кстати, знаете-ли-вы-что: GNU tar поддерживает LZMA из коробки, ключ -J)


Разве он при этом не хочет установленный bzip2?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[9]: 2Sheridan: ну че, баттл? PS vs Bash...
От: vintozoid  
Дата: 11.02.09 11:27
Оценка:
народ, вы батлиься то будете или нет ?

ЗЫ не в тему: думаю по автономности и возможностям busybox фсех сделает
Re[10]: 2Sheridan: ну че, баттл? PS vs Bash...
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 11.02.09 11:57
Оценка:
Здравствуйте, vintozoid, Вы писали:

V>народ, вы батлиься то будете или нет ?


Будем-будем. Вот поработаем чуть-чуть и будем баттлиться

V>ЗЫ не в тему: думаю по автономности и возможностям busybox фсех сделает


WTF busybox и "автономность"?

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[11]: 2Sheridan: ну че, баттл? PS vs Bash...
От: vintozoid  
Дата: 11.02.09 12:08
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Будем-будем. Вот поработаем чуть-чуть и будем баттлиться

клёва, давайте быстрее работайте

KV>WTF busybox

http://www.busybox.net/ — прога типа allinone, инструмент конечна сильно специфический (хотя присутствуем практически в любом девайсе, которым рулит линух)

KV> и "автономность"?

требуется для своей работы тока загруженое ядро линуха, все чё нужна внутри
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.