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