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
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.