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 комментария »

Live Installer MSI

Случайно натолкнулся на темку с описанием двух (!) способов получения msi установщиков для Live Messenger, Live Writer, и других приложений Live. Напомню, что обычный Live Installer требует интернет подключения. Да и в случае больших развертываний msi куда полезнее 🙂

Добыть их можно либо с системы где уже установлены продукты, из папки C:\Program Files\Common Files\WindowsLiveInstaller\MsiSources либо скачать отсюда: http://cid-9e63a4688135fd45.skydrive.live.com/browse.aspx/LiveWave2EN

Windows Live Sign-In Assistant 4.200.520.1: Install_{AFA4E5FD-ED70-4D92-99D0-162FD56DC986}.msi
Windows Live Messenger 8.5.1302.1018: Install_{508CE775-4BA4-4748-82DF-FE28DA9F03B0}.msi
Windows Live Writer 12.0.1366.1026: Install_{9176251A-4CC1-4DDB-B343-B487195EB397}.msi
Windows Live Mail 12.0.1606.1023: Install_{184E7118-0295-43C4-B72C-1D54AA75AAF7}.msi
Windows Live Toolbar 03.01.0000.0146: Install_{D5A145FC-D00C-4F1A-9119-EB4D9D659750}.msi
Windows Live Photo Gallery 12.0.1308.1023: Install_{257E440F-781F-459B-9A68-A0872B80C1D6}.msi

UPD: Вот тут еще другое решение проблемы.

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

Scripting Games 2008!

Буквально только что начались Scripting Games 2008. Напоминаю что есть 2 категории — Beginner Division и Advanced Division. Задания доступны на трех языках — VB Script, PowerShell, и Perl.

Полное описание в PDF.

Набор файлов для участия — Competitor’s Pack

Призы классные 🙂

Опубликовано в Learn, PowerShell, Scripting, VBScript. Комментарии к записи Scripting Games 2008! отключены