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[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[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[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[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[3]: А вот задание для PS
От: Roman Odaisky Украина  
Дата: 26.06.08 11:22
Оценка: -1
Здравствуйте, kochetkov.vladimir, Вы писали:

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


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

Или если у Шеридана фантазия кончится.
До последнего не верил в пирамиду Лебедева.
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[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[4]: Раунд 1.
От: TK Лес кывт.рф
Дата: 26.06.08 12:25
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

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


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

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


Например, через Picture Transfer Protocol (PTP)
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
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
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.