We rise up for the things we believe in over and over again
Ждал я ее, ждал... А теперь сижу и думаю, а стоило ли ждать. Серия игр, которая всегда и везде предполагала неспешное и вдумчивое прохождение, вдруг ставит тебя в жесткие временные рамки (13 игровых дней, не больше, а время там реально летит). Прибавить к этому совершенно невнятную боевую систему (вида "атаки наносят больший ущерб со спины", вот только зайти в хвост мобу нелья - он всегда поворачивается к тебе лицом).
Открытие новых способностей Лайтнинг - вообще феерия, их надо вышибать из мобов! Айон и Линейка - это все ваше тлетворное влияние! :)
Возможно я банально еще не распробовал эту игру, пока дополз, именно дополз, только до первого босса, который, кстати, вломил мне от души. Да даже белое мобьё уже доставляет много проблем, если за один бой приходится с двумя драться. А некоторые и в одиночку способны отправить в пункт меню Load.
Чую, придется понизить градус злобности игры, а то и вообще заново начать, много времени потеряно (да, мы на часах, помним?).

@темы: In-game

03:04

SQL Join

We rise up for the things we believe in over and over again
По большей части эта запись для себя самого, чтобы банально не забыть правило, которое вывел для себя. А звучит оно просто - всегда два поля, одно аггрегирующее, второе вычисляемое.
Это про вот такую конструкцию:

И как работает.
Есть таблица принтеров, где показано, какой принтер когда и куда был поставлен. В этой таблице можно отследить все перемещения данного конкретного принтера. И из этой же таблицы можно актуальный список установленных на данный момент принтеров. То есть для каждого принтера нужно получить самую свежую строку.
Разбор начинаем с собственно Inner Join. Из таблицы Log выбираем два поля, MAC-адрес (так как именно он является однозначным идентификатором каждого принтера) и дату установки. Группируем выборку по этому самому адресу. Если бы это делалось в Powershell, можно было бы указать примерно так:
... | select MAC,Date | group Date
А на выходе получили бы следующее:

В SQL такое не прокатит, но и не надо. Вот тут-то и пригодится вышеозначенное правило. Аггрегировали мы по полю MAC, а дату - вычислим. В качестве вычисления будет функция, возвращающая максимальное значение из всей полученной выборки.

Ну а после того, как получили рабочий Join, навешиваем на него остальные данные, которые нам выбирает первый Select. В качестве связи между двумя таблицами будет одновременное выполнение двух условий: MAC из первого Select должен быть равен MAC из Join, Дата из первого Select должна быть равна полю Time_Stamp из Join.

Все это в сумме дает по одной строке на каждый MAC, то есть, на каждый принтер. Что и требовалось.

Черт, давно же с базами данных (пусть даже это всего лишь MS ахсекс Access) не приходилось работать. Но если все получится - наконец-то избавимся от бардака в информации о всех принтерах, какие только есть.

@музыка: David Arkenstone - Spirit Wind

@настроение: клац-клац-клац...

We rise up for the things we believe in over and over again

На Black Desert Online сейчас многие надежды возлагают. Привык народ ко всякого рода MMO, но везде одно и то же. Нет, с точки зрения сути игры, BDO - ровно то же самое, но хотя бы non-target - глоток свежего воздуха.
С другой стороны - занимается этим проектом в нашей стране компания GameNet, и ее факап с платными аккаунтами уже прогремел на всю игровую общественность.
В общем, поглядел я на этот BDO, посмотрел на то слайд-шоу, которое он мне выдал на моей теперь уже старенькой Geforce 8600 GT, и снес всю игру вместе с клиентом GameNet. Было это где-то месяц назад. А вчера за каким-то чертом (а, вспомнил, хотел проверить, почему не работает коннект от телефона к веб-морде MPC HC) полез в файрволл и в правилах увидел следующее:
Thorn.exe inbound allow (C:\users\(AdminAccount)\appdata\local\thorn\thorn.exe)
Я очень нервно отношусь ко всякого рода бинарникам в папке профиля. Потому правило было уничтожено тут же. Открываем PS от имени той учетки (да, он у меня за файловый менеджер иногда работает), даем там:

cd c:\C:\users\%username%\appdata\local\thorn
dir

Какая-то пакость - в профиле лежит не то, что какой-то один бинарник, а целый их комплект. Не долго думая:

cd ..
rd thorn -force

И на выходе получаем Access Denied.

Значит, служба. ОК, открываем реестр, ищем там thorns.exe. Находим его в составе вот такой службы: Служба политики провайдера безопасности аккаунта (ишь, как обозвали-то, прям так и веет малварью от этого названия). Попытка ее остановить из консоли служб приводит все к тому же Access Denied. Ладно, тогда делаем проще, прямо в реестре меняем путь к файлу-бинарнику на несуществующий и перезагружаем систему. Служба тухнет. Дальнейший разговор с подобной мерзостью всегда один и тот же

cmd
sc delete thorn

А потом начинаем ковырять рунет. Рунет же подсказывает просто шикарнейшую вещь. Открываем GameNet EULA, раздел Лицензионное соглашение, и ищем там пункт 4.10. Тут я приведу его целиком:
-----
4.10. Пользователь осознает и соглашается, что при установке и эксплуатации программного обеспечения Проекта (в частности, Приложения GameNet) на электронно-вычислительную машину Пользователя в папку по адресу %LOCALAPPDATA%THORN может быть установлено программное обеспечение Администрации, предназначенное для борьбы с неправомерным использованием Проекта GameNet и обеспечения безопасности учетных записей Пользователей Проекта (далее – «Служба помощника провайдера безопасности аккаунта»). Служба помощника провайдера безопасности аккаунта ежедневно автоматически передает Администрации статистическую информацию о программном обеспечении, используемом Пользователем. Служба помощника провайдера безопасности аккаунта не собирает и не передает персональные данные Пользователя.

При удалении или деинсталляции Приложения GameNet Служба помощника провайдера безопасности аккаунта не удаляется и не деинсталлируется автоматически с электронно-вычислительной машины Пользователя. Пользователь вправе удалить Службу помощника провайдера безопасности аккаунта вручную. Для удаления Службы помощника провайдера безопасности аккаунта необходимо запустить системную утилиту Командная строка от имени администратора и выполнить команду cd %LOCALAPPDATA%\THORN && thorn.exe -c 20 && thorn.exe -u.
-----
У меня после прочтения такого опуса в голове только одна мысль. В приличном обществе за подобное поведение принято гладить лицо и жать горло. Причины очевидны. Нет, я согласен с тем, что EULA все же нужно читать, а не пролистывать, как это обычно делается. Но прямое заявление вида "мы вам насрем и уйдем, убирайтесь сами" заставляет озираться в поисках своей любимой лазерной винтовки из Fallout 1.

@музыка: David Arkenstone - Ancient legend

@настроение: дождь за окном...

@темы: Этот безумный мир, Security

We rise up for the things we believe in over and over again

KnV-программирование, говорите? Их есть у нас. Точнее, не у нас, а в Редмонде. А еще точнее - в каком-нибудь из Соединенных Штатов Индии.
Есть два файловика-виртуалки. Есть у них диск D:, где все данные и лежат. Этот диск имеет свойство пухнуть, как и всякая файлопомойка. Размер VHD-файла с этим диском уперся в свой потолок в 2 Тб (старый vhd). А расширять надо. Ну что же, процедура следующая.
Внутри виртуалки-файлопомойки переводим этот диск в состояние Offline.
В консоли Hyper-V выносим нафиг файл vhd и на его месте создаем новый vhdx с требуемым объемом (vhdx поддерживает файлы больше 2 Тб).
Снова переходим в виртуалку. Находим там свежий диск, переводим его в состояние Online, инициализируем, форматируем, даем прежнюю букву, и говорим развернутой на этом сервере DFSR - а теперь, родная, реплицируй все данные с сервера-партнера. DFSR козырнула и пошла жрать файлы.

А тем временем начинает вопить DPM. Суть в следующем. Когда в DPM в группу защиты добавляем сервер и его какой-либо диск, диск этот идентифицируется не по букве, а по своему GUID (да, опять GUID, снова GUID). Когда файлопомойке дали новый диск, естественно сменился GUID этого диска. И теперь встает вопрос - что делать с группой защиты, как в нее добавить новый диск.

Можно вынести оттуда старый и добавить новый. При попытке провернуть такой фокус DPM вопит, что бекапы, связанные со старым диском, станут невалидными (то есть придется снимать заново полный бекап в те 2 терабайта, а это время).
Можно попытаться связать запись в группе защиты об этом диске с новым GUID диска. Вот это нам и нужно.

Для такого переноса существует специальный скрипт, написанный где-то в недрах MS, который называется Migrate-Datasource.ps1. Вот статья, объясняющая, что это и как оно работает.

ОК, все данные для этого скрипта есть, даем его выполнение в автоматическом режиме. Оно находит старую запись, находит новый диск, пытается их связать... и дает следущее:

Exception calling "MigrateDataSource" with "2" argument(s): "The remote
procedure call failed. (Exception from HRESULT: 0x800706BE)"

At C:\Program Files\Microsoft System Center 2012
R2\DPM\DPM\bin\Migrate-DataSource.ps1:220 char:10
+ $dpmServer.MigrateDataSource($newDataSourceId, $oldDataSourceId)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : COMException

Error in Migration

Хм, все веселее и веселее. Ладно, а что ты мне покажешь в ручном режиме? А в ручном режиме оно мне предложило выбрать запись о диске, которую надо исправить, вывело список всех дисков (их GUIDов), которые можно к нашей многострадальной записи подцепить. Этих дисков оказалась ровно 1 штука. И я не знаю, что меня дернуло просмотреть, а кому этот GUID принадлежит, но увиденное заставило отменить скрипт от греха подальше. Дело в том, что предложенный GUID принадлежал MSR-разделу файлопомойки.

Даа, делаа... Поскольку дело было уже поздним вечером, решили эту проблему отложить до утра, чтобы окинуть ее потом свежим взглядом. Вернулись к ней только спустя дня эдак 4. И что бы мы ни делали с этим скриптом, результатом всегда было только одно - предложение связать запись в группе защиты с MSR-партицией. Черт с ним, все равно приближается время полного бекапа, так что уже были готовы убить старую запись и добавить новую. Да не тут-то было:
- Народ, а вы гляньте на последнюю точку восстановления!
- Вчера сделалась? Но ведь бекап не работал?
- Андрюха, походу после этого твоего скрипта бекап все же починился.
И действительно, бекап-то шел, как и полагалось, создалась новая точка восстановления. То есть, источник данных все же мигрировал на новый диск. А теперь поднимаем глаза выше, снова читаем надпись Error in Migration.
Становится понятным, почему провалилась попытка ручной миграции. Потому что новый диск уже был связан с записью в группе защиты и не был доступным для этой операции, только и осталось, что бедную мелкую MSR предложить.

Вот такие индийские скрипты пишутся для Data Protection Manager 2012. Хорошо еще, что хотя бы они есть, тут подсказывают, что в предыдущих версиях нужно было непосредственно базу данных DPM препарировать...

В поднятой в целях теста лаборатории этот же скрипт в такой же ситуации отработал на все сто. Далее много-много непечатного, потому печатать не буду.

Симантек, я, помнится, тебя материл безбожно. Как тут не вспомнить старое-доброе: "Вася! Если сможешь - прости!!!"

@музыка: Metal Gear Rising OST - Denver

@темы: Этот безумный мир, PowerShell, Scripting, DPM

We rise up for the things we believe in over and over again

Пришла пора обновлять гипервизоры. Стандартная процедура при этом - выгнать с них все виртуалки, сидящие в кластере, погасить все, сидящие вне кластера. Делаем привычное Move - Live Migrate - Best Possible Node... И получаем облом вот такого вида:

Virtual machine migration operation for 'xxx' failed at migration source 'NODExxx'. (Virtual machine ID %VM-GUID%)

'xxx' failed to delete configuration: The request is not supported. (0x80070032). (Virtual machine ID %VM-GUID%)

Блуждания в инете говорят, что проблема в одном из двух:
1. Всякий антивирусный софт. В моем случае маловероятно, потому что с этой ноды уже несколько машин спокойно уехало. Для очистки совести заглянул в параметры антивирусного ПО - все, что относится к Hyper-V и кластеру - добавлено в исключения. Стало быть, не то.
2. Изменение настроек кластерной ВМ через оснастку Hyper-V. Рассуждения таковы: оснастка Hyper-V может банально не знать о кластерных настройках и при записи новых значений в файл просто вытрет их оттуда. Отсюда и кривая работа ВМ в кластере. Лечить - удалением пораженной машины из кластера и добавление оной в кластер заново.

В рабочем чате собирается BrainStorm. Поступает предложение выполнить валидацию всего кластера, исключив проверку стораджей. Запускаем. Проверка показывает ересь в плане сетевых настроек, но они на ВМ так влиять не должны. Смотрю на раздел VM Configuration, вместо привычного Success стоит Warning. А расскажи-ка мне поподробнее, что там предупреждение выкинуло? Каково же было мое удивление, когда я прочитал следующее:

Virtual Machine: xxx
Configuration Data Root: C:\ProgramData\Microsoft\Windows\Hyper-V

Вот в чем дело. Гипервизор считает, что файл описания ВМ хранится не на кластерном диске, а на локальном, куда хода остальным нодам кластера нет. Что ж, надо это исправить. Выключаем пораженную машину, в оснастке Failover Cluster Manager жмем на ней правой кнопкой мыши, выбираем Move, Virtual Machne Storage. В появившемся окне назначаем нужным разделам нужные каталоги на кластерном диске, и жмем ОК. А по нажатию кнопки ОК гипервизор нам заявляет, что переместить файл описания виртуальной машины не может, так как там этот файл уже есть. Хм... То есть у нас есть две копии одного файла, и рабочая из них та, что лежит в неположенном месте. Ладно, уберем их с кластерного диска, благо, имя конфликтующего файла оснастка кластера показывает. После этого дадим оснастке команду обновиться, чтобы она "забыла" о том, что на кластерном диске что-то было, и повторно попробуем переместить файлы конфигурации и обновить каталоги. В этот раз все прошло на ура.

Rinse and repeat 5 more times, потому что валидация кластера показала 6 таких пораженных виртуальных машин.

Самый главный вопрос - почему файлы конфигурации этих ВМ переползли на локальные диски, пока без ответа. Но хотя бы можно продолжить процесс обновления гипервизоров.

@музыка: Mass Effect 2 - Rescue Tali / Collectors Base Assault

@темы: Virtualization, Hyper-V

17:00

Social

We rise up for the things we believe in over and over again
Хм... На подобные темы записи в этом дневнике возникают просто до безумия редко. Однако, этот случай, имхо, исключение. Открываем интересную статью: Пенсионная криогеника - Клац на Lenta.ru и вдумчиво читаем. Там речь о том, что пенсионные накопления, на которые работающие граждане возлагали/-ют, в принципе, немалые надежды, заморожены в очередной раз. И попутно поднимается извечный вопрос - а будет ли возврат. Далее приведу просто офигительную по своему воздействию по крайней мере на мой мозг цитату из этой статьи:

Идея ведомств, отвечающих за социальную защиту, заключается в том, что отчисляемые на накопления деньги, пока не попали на счет гражданина, — общественные, а значит, могут в какой-то момент перенаправляться на другие нужды общества. Отсюда же следует, что и возвращать эти деньги на накопительные счета никто не собирается.

Эту концепцию замглавы ПФР выразил вполне ясно: «Пенсионные фонды у меня часто спрашивают: когда же вернут пенсионные накопления? Как же их могут вернуть, когда никто ничего не забирал?!»


Дальнейших комментариев не будет, ибо ну уж очень матерно. Хотя нет, будет, но...
порядочным людям лучше не смотреть, непорядочным и им сочувствующим - по желанию

@музыка: Australis - Turns of faith

@настроение: догадайтесь...

@темы: Этот безумный мир

We rise up for the things we believe in over and over again
Да, да, им все мало :)



И ведь найдутся желающие купить сразу всю трилогию :)

@темы: Этот веселый мир

We rise up for the things we believe in over and over again
Задумал коллега хлебнуть кофе с пенкой. Кинул денег в автомат, и стоит ждет, пока ему автомат все сделает. А автомат возьми и скажи прямо в середине процесса - "кофе закончился". П. в итоге стоит, смотрит на стакан с белоснежными сливками, которые автомат все же налил, чешет репу, после чего заявляет: "Нет, я все же выпью этот кофе". И с целеустремленностью кирпича в полете открывает наш шкафчик, где хранятся всякие чайные принадлежности, берет оттуда растворимый Nescafe и фигачит его в отданный аппаратом стаканчик с пенкой. Смотрим на все это, хихикаем, один из наших изрекает: "П., ты этот кофе только что изнасиловал %)"

Ну и на сладкое - творчество тех же коллег %)


@музыка: Galactic Warriors - Return to Atlantis

@темы: Этот веселый мир

We rise up for the things we believe in over and over again
На днях означенная игруха в стиме с огромной скидкой продавалась. Подумал, чего бы не заценить творение той же студии, что выпустила так полюбившуюся сердцу историю Life is strange. Что я могу сказать вам, зайчатки (с)? Если бы в RM я сыграл до выхода LiS, боюсь, мое знакомство с Макс и Хлоей могло бы и не состояться вовсе.
Геймплей. История, конечно, важна, слов нет, но и убивать геймплей тоже никогда не следует, даже в угоду этой самой истории. К слову сказать, элементы этого геймплея мне уже доводилось видеть в других играх - на куда более высоком уровне: Prince of Persia 2008 - паркура там ну просто хоть в три горла ешь, в боях от него отдыхаешь, но он и не напрягал нисколько; Metal Gear Rising/Devil May Cry 3,4 - хотите экшена, их есть у нас, тоже море, и тоже интересного. Причем с паркуром, в общем-то, проблем никаких, просто чувствуется, будто чего-то не хватает, а вот боевка... О ней особо.
Что такое боевка в RM? Она целиком и полностью завязана на комбо-ударах. Чем больше ударов в цепочке, тем сильнее бьет каждый последующий. Ну или не бьет, а, например, лечит, или время восстановления навыков уменьшает. Да только есть засада, любой удар, принятый "в лицо" сбивает эту цепочку, хотя так и должно быть. Игра нам позволяет этого избежать путем уворотов.
Официальная документация и все промо-ролики утверждают следующее: использование уворота, если получилось в результате его применения уйти от плюхи в рожу (а как показывает практика - не всегда получается), не прерывает цепочку, и вы можете продолжить мутузить избранного в качестве мишени моба с усиленным эффектом. Да вот беда, в процентах так 75 случаев это НЕ работает, цепочка рвется. Причин тому ровно три. В половине случаев - рвется дистанция между мобом и целью, в результате чего за отведенное время нельзя продолжить цепочку. В одной из оставшихся четвертей - собственная криворукость, которая более-менее выправилась к концу игры (как-никак, на Errorist Agent закончил - средняя сложность, за Memory Hunter - местный Hard - даже браться не буду). В другой оставшейся четверти - совместная работа камены и автоприцела.
Ооо, как я вас возненавидел! Особенно последний, особенно с боями против воздушных противников в толпе местной пехоты. Камера же... Даже многими поминаемая и проклинаемая камера в DMC 3 кажется эталоном удобства по сравнению с тем, что приходится контролировать правым стиком в RM. В общем, много нехороших слов было сказано по ходу прохождения в адрес камеры.
Красным 72-м шрифтом - это все в игре, основной фишкой которой преподносятся вот такие кулачные бои. Да-да, оружия нет, только ногами-руками (Ранфа, вылезай!). Хотя вру, есть что-то вроде ручного пулемета, по совместительству очень похожего на Mass Effect'овский Omni-tool. Ну и несколько спецспособностей, частота применения которых всецело зависит от радиуса кривизны рук игрока.

А уж какие роскошные баги! Два Skinner'a, оба со своими щитами, пока занимаешься одним, второй тебя и приголубит. Ладно, есть способ, берем тот самый пулемет и сносим нахрен щит хотя бы у одного. Три выстрела и ему хватит. Второй в этот момент подходит к тебе в упор и начинает долбить кулаками по лицу (буквально), а ты понимаешь, что атаковать не можешь! Вообще не можешь, НИКАК! Только уворачиваться, но бесконечно же не будешь бегать от супостата. А придется, если не хочешь загружаться с последнего чек-поинта. Что? Не хочешь? Ну тогда дальше и не пройдешь, бегай на здоровье!

С другой стороны, одному багу я обязан тем, что вообще дошел до конца. Итак, сетап: целых два Mourning Leaper'а и куча (действительно, куча) leaper'ов поменьше. Если с мелочью проблема только одна - их много, но это поправимо (слабые они, одной логической бомбы хватит, чтобы уполовинить их число), то со старшими братьями все куда сложнее. Первое - просто так их не ударить, постоянно телепортируются на поле боя, норовя прям как заправские сины жахнуть тебя из хайда. Что и делают. Вот только у синов-игроков, как правило, выхода из хайда снова в него залезть возможности может уже и не представиться, эти же сваливают сразу после удара. Второе - их сразу два, и это действительно проблема. Уворачиваешься от одного, персонаж входит на несколько кадров в неуправляемое состояние (анимация восстановления после прыжка), но в этот момент он уже уязвим, и вот тут второй тебя тепленького и возьмет. Третье - даже если извести всю мелочь, "старшие братишки" вызывают новых.
Выход из этой "арены" не открывается, пока не уложишь всех.
Так вот, не знаю, какие условия надо было создать или что именно сделать, но после второй логической бомбы во время черт-знает-какой-по-счету-попытки, когда противники еще живы, мне засчитывают победу в этом бою, открывают двери и говорят - ваше следующее задание там-то, идите и несите возмездие. Что за чертовщина, я до сих пор понять не могу, но знаю точно, скорее всего на сегодня я бы забил на игру. Это сражение меня выбесило.

Саундтрек. В отзывах его хвалят. Что ж, вкусы у всех разные, так что говорю лишь за себя - не запомнился ни единой композицией. Даже "боевые" треки, что в моей практике для action-игры вообще ахтунг, мелодия всегда задает темп. Майкл МакКанн,Джеймс Кристоферсон, Гарет Кокер - где же вы?!

Помнить тебя? Увы, боюсь, поводов забыть куда больше. На фоне этого все же есть радость, Dontnod Ent. может делать классные игры - Life is strange тому пример. Просто action - не их жанр.
Ну и на вкусное:

С "грехом" обозначенным номером 42 согласен целиком и полностью - взоржал с этого момента еще в игре :)

@музыка: James Chrostoferson - Dwarf Gekko

@темы: In-game

We rise up for the things we believe in over and over again

Проблема, буквально задалбывающая при работе с VM WS - ни с того, ни с сего отваливается фукнция копирования/вставки их Host OS в Guest OS и наоборот. Обычный метод лечения - перезагрузка хоста, но бывают же случаи, когда перезагрузить хост просто нельзя. Тогда делаем так:
1. Идем в Guest OS. Вырубаем там процесс vmtoolsd.exe.
2. Идем в Host OS. Вырубаем там процесс vmware-tray.exe, после чего запускаем его заново.
3. Идем в Guest OS. Запускаем там ранее убитый vmtoolsd.exe при помощи команды "C:\Program Files\VMware\VMware Tools\vmtoolsd.exe" -n vmusr, или "C:\Program Files (х86)\VMware\VMware Tools\vmtoolsd.exe" -n vmusr для 64-bit Host OS.
И наслаждаемся копипастом ровно до следующего вылета.

Пробовал обойтись только перезапуском процесса в Guest OS, не помогает :(

@музыка: David Arkenstone - Prelude: Talis the messenger

@темы: VMWare, Virtualization

23:34

GA

We rise up for the things we believe in over and over again

Касуми... Эм... Касуми Гото? :) Впрочем, с какой-то точки зрения ее, действительно, стоит пожалеть. Одну "пассию" ликвидировали, вторая ее ни в грош не ставит.

@темы: Этот веселый мир

22:10

Bullets...

We rise up for the things we believe in over and over again
Мне тут вечер сделали, и я не могу не поделиться этой радостью :)

Вот только интересно, откуда ж они такие берутся, "исследователи"?

@музыка: David Arkenstone - Prelude- Tallis the Messenger

@темы: Этот безумный мир, Этот веселый мир

We rise up for the things we believe in over and over again
"Походных" треков у меня несколько, ниже один из них. За те месяцы, что жил без ушей в полях, уже даже забылось, каково оно - идти в такт музыке. Теперь вспомнил. И это - потрясающе!


@музыка: David Arkenstone - Troika - The Messenger

@темы: Music

We rise up for the things we believe in over and over again

Казалось бы, ничто не предвещало. Ну выключили все оборудование на одной из площадок (шли работы с электричеством). Ну включили его назад, проверили, что все работает, оно и работает. А SCOM ни с того, ни с сего начал вопить, что на гипервизорах Win 2012 по какой-то причине закрыты порты для файлового обмена. И это при том, что на шары тех серверов вполне себе заходишь, все, что надо, видишь. Что за напасть?
Коллега подсказал, что такое возникает в случае, если гипервизор был поднят раньше контроллера домена, и сетевой профиль сбросился с доменного на публичный. Ну а исправлять это, соответственно, перезагрузкой гипервизора при уже живом контроллере.
В этот раз по такому проверенному методу и пошли, перезагрузили гипервизоры. Но ведь неправильно это, должен быть метод сброса профиля на правильный.
Начинаем ковырять. Согласно всемирному разуму, за профили сетей у нас отвечает служба Network Location Awareness (NLA). А что, если ее перезапустить при работающем сервере в ситуации, когда контроллер домена уже жив? Настраиваем небольшую лабораторию: один контроллер на 2008 (выше все равно не поставлю ибо x86 only) и одна ВМ под управлением Windows 7 - она исполнит роль того сервера-гипервизора, что нужно вылечить. Лаборатория поднялась, все отлично. Тушим ее и поднимаем только Windows 7. Так и есть, профиль сети, которая ранее была Domain Network - example.com теперь стала неопознанной публичной сетью. Замечательно, даем рестарт службы NLA. И тут нас поджидает фейл, не смогла она остановиться.
Как же так? А вот как. В дочерних службах NLA указана еще одна - Network List Service. Она заведует списками профилей. И ее тоже надо потушить. И как раз на стадии выключения этой дочерней службы получаем ошибку "Can't stop service...". Причем ссылается ОС на внутреннюю ошибку либо в этой службе, либо в самой ОС, и, как всегда, предлагает обратиться к системному администратору (а я кто, по-твоему?!). Как же тебя корректно потушить. А что если воспользоваться старым грязным хаком, который я уже и не вспомню, откуда в моей голове - сменить тип запуска службы? Меняем на Disabled и пробуем остановить - потухла. Замечательно, теперь очередь их поднять. Сначала поднимаем дочернюю, предварительно выставив ей тип запуска Manual (именно в таком режиме она по-умолчанию). Поднялась. Теперь запускаем NLA - взлетела. Смотрим на профиль сети - Domain network - example.com. Что и требовалось.
Проверка номер два - а теряется ли в этот момент сетевое соединение с "гипервизором". По логике вещей не должно теряться, но если возникло сомнение - проверяй. Повторяем эксперимент, добавив в лабу третью ВМ - рабочую станцию администратора. Запускаем на ней пинг к гипервизору и прямо с нее проводим рестарт служб. Все отлично, "ни единого разрыва" (с). Плюс одна монета в копилку знаний.
На будущее оформляем все в виде скрипта:


@музыка: Ryan Farish - Let it rain

@темы: PowerShell, Scripting

10:43

Scary...

We rise up for the things we believe in over and over again
Что может быть лучше, чем немного хорошей крипоты субботним утром? :)


@музыка: Ryan Farish - Let it rain

@темы: Этот веселый мир

We rise up for the things we believe in over and over again
Делать было нечего.
Или, если вспомнить наставления неофитам по работе в ОС Windows: "Все подтверждения о файловых операциях нужно отключить. В жизни пригодится. Ничего, пару раз сотрешь свой порно-каталог - потом будешь удалять файлы не просто внимательно, а безупречно внимательно."
Ну, порно-каталогов на моем харде не водится, но...
Тестируем возможности Powershell и robocopy на предмет копирования NTFS-прав в различных сценариях, и даем команду:
PS D:\> robocopy test e:\ /MIR
а потом судорожно прерываем выполнение. Battle casuaties: E:\Distrib\Games. Черт, и хорошо, и плохо. Ну да ладно, восстановить Mass Effect - не самая большая проблема, а все остальное не так уж важно. Главное, что буквально следующим в списке целей было E:\Distrib\Images - а вот это было бы уже серьезнее, заново собирать коллекцию образов дисков было бы напряжно.
Короче говоря, при играх с robocopy дружба с ключом /L обязательна.

@музыка: U.D.O. - Speeder

@темы: Этот безумный мир

We rise up for the things we believe in over and over again
Что я могу сказать... Близзы - браво! Вы еще раз доказали, что можете, если хотите!
Мда, теперь точить зубы на Brutal difficulty за протоссов, за которых я играть не умею от слова совсем...

@настроение: Great!

@темы: In-game

We rise up for the things we believe in over and over again
Вспомнилось тут.
Доктора Мордина в ME 2,3 я не шибко любил. Ну не нравятся мне саларианцы, и все тут. Шутки про "просто добавьте в игру еще голых азари" отставить %). Но должен признать, его песенка порадовала, да:

В то же время, на лурке правильно написали, что сам по себе ME - кладезь штампов. Натырено там много чего и много откуда чего. В том числе и эта самая песенка :) Да, да, вот ее если и не первоисточник, то уж идейный вдохновитель - наверняка:


@настроение: :)

@темы: Этот веселый мир, In-game

We rise up for the things we believe in over and over again

Когда-то давно моя копия Windows 10 обновилась до билда за номером 10240, да так и застыла на нем. Ни туда и ни сюда, билдов уже поприходила народу куча, а на мою систему не прилетает ничего. Вспомнил, что примерно в те же времена я порубил в винде кучку следящих сенсоров, поддавшись вою в Сети насчет приватности и прочего. Давай проверять:

mmc, File, Add/Remove Snap-in, Group Policy Editor, Local Computer, Computer configuration, Administrative templates, All settings, Allow telemetry.

Стоит в позиции Enable, а в расширенном виде - 0-Off.
OK, меняем на 1-Basic. Проверяем обновки - ноль эмоций. Перезагружаемся, ноль эмоций.
ОК, меняем на 2-Enhanced. Проверяем обновки - ноль. Перезагружаемся, система ловит th2_release Professional 10586 и начинает его прожевывать.

Далее идет много-много непечатного текста...

@музыка: Eleni Violaris - Song to the Earth

@темы: Этот безумный мир, Security

We rise up for the things we believe in over and over again

Когда речь заходит о принтерах,
администратор сразу же уходит в серверную,
запирается там и медитирует на мигающие светодиоды.
Потому что принтеры - это скучно.

(с) Народное творчество


Допустим, есть задача. Расставить много-много принтеров для новоприбывающих сотрудников. А потом эти принтеры сделать доступными по сети через принт-сервер. А чтобы совсем весело было, добавим в эту задачку следующие условия:
- адреса этим принтерам должны прилетать от DHCP и быть там зарезервированными
- адресация принтеров начинается с 221-го номера соответствующего диапазона, заканчивается на 250-м. Если этой части диапазона не хватает (и только в этом случае), можно идти вниз от 220-го до 200-го включительно
- FQDN принтера должно равняться букве "p" c МАС-адресом и доменом: например - p112233445566.example.com
- отображаемое имя (то самое, под которым он будет виден клиентам) собирается из шаблона Город-номер_площадки-этаж-модель-индекс (индекс - если нужен): NSK-04-304-HP555 (Новосибирск, 4-й офис, 304 кабинет, модель HP LaserJet 555
- имя порта на принт-сервере должно равняться FQDN принтера.

Хорошая задачка? Вот и мне показалось, что хорошая. А уж сколько в ней оголтелого мышкокликерства, копипаста, нервов и еще чего похуже. Одним словом - так жить нельзя.
Install-Printer.ps1

Традиционно, как готовить. Из текста скрипта ясно, что он берет входные данные из csv-файла. Формат его таков:
Name,MAC,IP
Само собой, что эти данные у нас должны быть. Пример файла ниже:

Также скрипт подразумевает, что на принт-сервере уже установлены все необходимые драйверы.

Если используются другие принципы именования портов на принт-сервере и записей на DHCP - изменить логику работы скрипта не так уж сложно. Все в соответствующих переменных.
Можно его еще и расширить, чтобы он на основании имени выбирал, на какой сервер печати принтер устанавливать. Например, если на площадке с индексом 01 свой принт-сервер, и на 04 - тоже свой. C DHCP-сервером - ровно то же самое. В общем, возможностей по его изменению - достаточно.

И, наверное, стоит завести еще одну традицию - напоминание. Предварительное тестирование скрипта в лабораторных условиях - ОБЯЗАТЕЛЬНО. В нем нет никаких действий по удалению имеющихся объектов где-бы то ни было, но тем не менее.

@музыка: Eleni Voilaris - Song to the Earth

@темы: PowerShell, Scripting