PowerShell и другие скрипты

29.2.2008

Scripting Games: Advanced PowerShell – Event 1

Рубрика: Learn, PowerShell, Scripting, Scripting Games — Xaegr @ 9:42

Итак начинаю публиковать свои решения задачек с Scripting Games. Поздновато, но лучше чем через месяц :)

Текст не точно соответствует отправленному – я буду добавлять комментарии, и возможно какие то косметические изменения. Например по возможности разносить длинные конвейеры на несколько строк (просто добавляя переносов), или вместо псевдонимов писать полные команды.

Итак, первая задачка :)

Event 1- Could I Get Your Phone Number?

(далее…)

27.2.2008

Перемешивание элементов массива

Рубрика: Learn, PowerShell, Scripting, Tips — Xaegr @ 13:08

Я нифига не понял как это работает, но нашел такое:
[collections.arraylist]$a = 0..51
$r = ($a.count-1)..0 |% {$R = new-object random}{$R.next(0,$a.count) |%{$a[$_];$a.removeat($_)}}

Оно работает, но если мне объяснят – как, то буду счастлив =)

[collections.arraylist]$a = 0..51 # Создаем объект типа arrayList (в отличии от # обычного array у него есть метод .RemoveAt) и помещаем в него все числа # от 0 до 51 включительно $ret = # Результат сортировки мы поместим в переменную $ret ($a.count-1)..0 | % { # это некий аналог for :) просто выполняем операцию # столько раз, сколько элементов в массиве. % - это # просто алиас для foreach-object. # Кроме того, синтаксис foreach-object не ограничивается # одним блоком кода. foreach-object [{begin}] {process} [{end}] # блоки кода begin и end выполняются однократно, перед # и после обработки всех элементов соответственно. Блок # process выполняется для каждого элемента конвейера. $R = new-object random # Тут, перед началом обработки элементов создается # объект $R, для получения произвольных чисел }{ # теперь пошел блок process, он выполнится для каждого элемента конвейера $R.next(0,$a.count) | # Вызывается метод next объекта $R. Он выдает # произвольное число в пределах массива которое # передается по конвейеру дальше %{ # в foreach-object... $a[$_]; # теперь элемент под произвольным номером выдается в # конвейер дальше, и... $a.removeat($_) # удаляется из оригинального массива. } } # в результате на выходе будут элементы вытащенные из $a в произвольном порядке

Я бы сам наверное не понял бы такого объяснения :) Так что спрашивайте что непонятно :)

Иначе можно было бы написать то же самое так:

[collections.arraylist]$Arr $Arr = 0..51 $Rnd = new-object System.Random $Result = @() for ($i = 0; $i -lt $Arr.count; $i++) { $Id = $Rnd.next(0,$Arr.count) $Result += $Arr[$Id] $Arr.RemoveAt($Id) }

Поиск дубликатов файлов

Рубрика: Learn, PowerShell, Practice, Scripting, Tips — Xaegr @ 9:46

Часто бывает надо :) Решается на PowerShell в 1 строчку :)

По каталогу рекурсивно отбираются файлы у которых одинаковое имя и размер:

[PS C:...Temp] Dir -rec | group name,length | where {$_.count -gt 1} Count Name Group ----- ---- ----- 2 file2.txt, 62804 {file2.txt, file2.txt} 2 file3.txt, 57860 {file3.txt, file3.txt}

Полные пути дубликатов, подряд:

[PS C:...Temp] Dir -rec | group name,length | ?{$_.count -gt 1} | Select -Expand group | ft fullname FullName -------- C:RootTempfile2.txt C:RootTempFolder6file2.txt C:RootTempfile3.txt C:RootTempFolder6file3.txt

Группами дубликатов:

[PS C:...Temp] dir -rec | group name,length | ? {$_.count -gt 1} | %{$_ | select -expand group | ft fullname} FullName -------- C:RootTempfile2.txt C:RootTempFolder6file2.txt FullName -------- C:RootTempfile3.txt C:RootTempFolder6file3.txt

Использованные сокращения (все присутствуют в PowerShell по умолчанию) :)

  • dir = get-childitem
  • -rec = -recurse
  • group = group-object
  • ? = where-object
  • % = foreach-object
  • select = select-object
  • ft = format-table

26.2.2008

Диверсионные технологии Microsoft и другие "новости"

Рубрика: Learn, PowerShell, Scripting — Xaegr @ 15:16

Купил себе X-ящик… Совпало еще с тем что приболел… 2 дня на прошлой неделе + выходные провалялся с геймпадом в руках… вырванный из жизни, но довоооольный :) Жалею только что раньше не купил. Графика огого, тормоза за это время 2 раза по 3 сек. видел (при чтении с компакт-диска). Сколько будет стоить PC чтоб такое держать я не знаю. Что интересно, при такой графике – процент хороших (по играбельности) игрушек тоже сильно выше чем на PC (где последнее время куча треша к сожалению…). В итоге – дурак что не купил раньше. Всё таки специализация – рулит :) Один только минус, – игрушки стоят в среднем 2000р., но они их действительно стоят :) </лытыбр> :)

По поводу прошедшего вебкаста. Там у меня случился жуткий облом с микрофоном – эта скотина постоянно снижала громкость, а я с ним пытался бороться… В итоге меня было «иногда слышно». Впрочем, судя по отзывам тех кто по своим техническим причинам смотрел без звука – «понравилось и было понятно» :) Короче говоря не рекомендую портить себе нервы и слушать этот кошмар (во всяком случае вторую половину не рекомендую, а в первой Андрей Бешков здорово всё говорил и его было отлично слышно :) ). Скорее всего вебкаст будем переписывать, так что лучше потерпеть. При желании, скрипты использованные в вебкасте, можно взять отсюда – isatoolbox.ps1 и presentation_scripts.ps1. PDF с слайдами – Powershell_1.pdf

Scripting games идут вовсю. Решения на все эвенты из Advanced Division я отправил еще в первые пару дней после начала, и теперь решаю только Sudden Death Challenge (они будут выкладываться постепенно в течении игр :) ). Если кто то пропустил начало, но хотел бы поучаствовать – добро пожаловать. Главное в этом мероприятии не очки, а интерес и обучение новым фокусам :)

Я постараюсь опубликовать свои решения задачек. Не все они красивые :) но надеюсь будет интересно :) А пока рекомендую ознакомиться с решениями других участников в следующих блогах:

http://thepowershellguy.com/blogs/posh/default.aspx

http://thepowershellguy.com/blogs/gaurhoth/default.aspx

http://msgoodies.blogspot.com/

А еще тут – http://www.microsoft.com/technet/scriptcenter/funzone/games/games08/experts.mspx

Надеюсь скоро присоединюсь к ним :)

ЗЫ: «Диверсионные технологии» – это про x-box ;)

21.2.2008

Неуловимый Джо и трудности перевода

Рубрика: PowerGui — Xaegr @ 13:05

Из переписки:

Может есть варианты лучшие варианты перевода Step’ов?

Без понятия по поводу степов. Я очень редко пользуюсь русскими интерфейсами. Даже не уверен, существует ли русская visual studio в природе, так что не знаю, что там общепринято.

Студия существует… Но вот существуют ли люди её использующие…. Я не нашел среди своих знакомых =)

Так что вопрос к community :) Кто нибудь пользуется русской Visual Studio? Каков официальный вариант перевода на русский следующих команд:

  • Step
  • Step Into
  • Step Out

Может кто то предложит не официальный, но просто хороший и понятный вариант? :)

Спасибо! :)

Предыдущие записи »

Блог на WordPress.com.