Scripting Games: Advanced PowerShell — Event 1

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

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

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

Event 1- Could I Get Your Phone Number?

Читать далее…

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

Я нифига не понял как это работает, но нашел такое:
[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) }

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

Часто бывает надо 🙂 Решается на 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
Опубликовано в Learn, PowerShell, Practice, Scripting, Tips. Комментарии к записи Поиск дубликатов файлов отключены

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

Купил себе 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 😉

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

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

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

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

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

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

  • Step
  • Step Into
  • Step Out

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

Спасибо! 🙂

Опубликовано в PowerGui. 2 комментария »