Главная

Wednesday, 29 November 2017

Профилирование в PowerShell.


Всем привет.

Во время работы с PowerShell все псевдонимы, функции и переменные на самом деле добавляются только в ваш текущий сеанс PowerShell.

При завершении сеанса или закрытии Windows PowerShell сделанные изменения утрачивают силу. Для сохранения изменений можно создать профиль Windows PowerShell и добавить в него нужные псевдонимы, функции и переменные. Профиль загружается при каждом запуске Windows PowerShell. Чтобы можно было загрузить профиль, действующая политика выполнения Windows PowerShell должна допускать загрузку конфигурационных файлов. Если она не позволяет загружать конфигурационные файлы, попытка загрузить профиль не удастся и оболочка Windows PowerShell отобразит сообщение об ошибке.

Основные сведения о профилях в PowerShell.

Оболочка Windows PowerShell позволяет пользователю иметь четыре разных профиля. Ниже они указаны в том порядке, в котором они загружаются.

Если в конкретной ситуации могут быть использованы несколько профилей, предпочтение отдается более узконаправленному:

1) %windir%\system32\WindowsPowerShell\v1.0\profile.ps1
Действие этого профиля распространяется на всех пользователей и все оболочки

2) %windir%\system32\WindowsPowerShell\v1.0\ Microsoft.PowerShell_profile.ps1
Действие этого профиля распространяется на всех пользователей, но только на одну оболочку - Microsoft.PowerShell

3) %UserProfile%\My Documents\WindowsPowerShell\profile.ps1
Действие этого профиля распространяется только на текущего пользователя и на все оболочки

4) %UserProfile%\My Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
Действие этого профиля распространяется только на текущего пользователя и только на оболочку Microsoft.PowerShell.

Saturday, 25 November 2017

Using PowerShell behind a Proxy.

Hi everybody.

Today I would like to point that PowerShell after version 3 has some useful  commandlets concerning Web.

As simple task, you try to load some resource from the web in PowerShell, e.g., with one of the following two commandlets:

PS> Invoke-WebRequest http://example.org
PS> Update-Help

However, you get an “access denied” or “no network connection” error message there may be a web proxy in your company  blocking your way, demanding authentication.

What needs to be done?

You have to configure PowerShell’s proxy settings. Some commandlets like Invoke-WebRequest offer options that let you set the proxy for just one command:

PS> Invoke-WebRequest -Proxy http://proxy.example.net:8080  -ProxyUseDefaultCredentials  http://example.org

For commandlets that don’t have such options (like Update-Help), or if you’d rather set the proxy for the whole PowerShell session, issue the following command:

PS> (New-Object System.Net.WebClient).Proxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials

All commands after that will implicitly use the system proxy, so you can issue commands like the above Invoke-WebRequest http://example.org or Update-Help and they will “just work”.

There some examples are the following by Proxy:

#1:

$secPasswd=ConvertTo-SecureString "Password" -AsPlainText -Force
$myCreds=New-Object System.Management.Automation.PSCredential -ArgumentList "Domain\name",$secPasswd
$Site="http://nyuk.narod.ru"
$Test=Invoke-WebRequest -URI $Site -Proxy "http://myproxy.skyfleet.com:8080" -ProxyCredential $mycreds
$Test.Links

#2:

PS C:\Users\Admin> $w = Invoke-WebRequest -Proxy http://myproxy.skyfleet.com:8080 -ProxyUseDefaultCredentials http://nyuk.narod.ru

PS C:\Users\Admin> $w.links | fl innerText, href

innerText :
href      : http://www.peresvetmed.ru
innerText :
href      : http://flasher911.narod.ru/demo5/
innerText :
href      : http://www.medinfo.dp.ua
innerText :
href      : http://nyukers.ucoz.net
innerText : MedixWare 2000 Ultrasound®:
href      : index4.html
innerText : Nyukers® Network Suite - швейцарский нож для админа!
href      : http://nyuk.narod.ru/soft.html
...
and so on.

#3:

# Create the Web Client object
$Client = New-Object -TypeName System.Net.WebClient

# Tell it to use our default creds for the proxy
$Client.Proxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials

# Now we try to run our command, in this case, downloading a web page.
$Client.DownloadString("http://nyuk.narod.ru")

#4:

$Client = New-Object -TypeName System.Net.WebClient
 $proxy = New-Object -TypeName System.Net.WebProxy

$proxy.Address = [uri]"http://myproxy.skyfleet.com:8080"
 $proxy.Credentials = (new-object System.Net.NetworkCredential("Username", "Password", "Domain"))

$Client.Proxy = $proxy

$Client.DownloadString(http://nyuk.narod.ru)


#5: (for session login have to type online)
$c = Get-Credential
$web = New-Object System.Net.WebClient
$web.Proxy.Credentials = $c
update-help -force



See you later.

Friday, 24 November 2017

Обработка прерывающих ошибок в PowerShell.


Здравствуйте.

Обработка прерывающих ошибок (exceptions).

Продолжаем тему обработки ошибок в PowerShell, начатую в предыдущем посте. Сегодня речь пойдет об обработке прерывающих ошибок (исключений). Надо понимать, что сообщение об ошибке — это не то же самое, что исключение. Как вы помните, в PowerShell есть два типа ошибок — непрерывающие процесс и прерывающие. Непрерывающие ошибки позволяют продолжить работу, тогда как прерывающие останавливают выполнение команды. Остановка приводит к исключению (exception), которое и можно отлавливать и обрабатывать.

Примечание. Таким же образом можно обрабатывать и непрерывающие ошибки. Изменение параметра ErrorAction на Stop прервет выполнение команды и произведет исключение, которое можно уловить.


Для наглядности сгенерируем ошибку, попытавшись прочитать файл, на который у нас нет прав. А теперь обратимся к переменной $Error и выведем данные об исключении. Как видите, данное исключение имеет тип UnauthorizedAccessException и относится к базовому типу System.SystemException.

 PS C:\Users\MyName> $Error[0].Exception.GetType()
IsPublic IsSerial Name                                     BaseType                                                                                           
-------- -------- ----                                     --------                                                                                           
True     True     UnauthorizedAccessException              System.SystemException


Для обработки исключений в PowerShell есть несколько способов, которые мы сегодня и рассмотрим.


Try/Catch/Finally


Конструкция Try/Catch/Finally предназначена для обработки исключений, возникающих в процессе выполнения скрипта. В блоке Try располагается исполняемый код, в котором должны отслеживаться ошибки. При возникновении в блоке Try прерывающей ошибки оболочка PowerShell ищет соответствующий блок Catch для обработки этой ошибки, и если он найден, то выполняет находящиеся в нем инструкции. Блок Catch может включать в себя любые команды, необходимые для обработки возникнувшей ошибки и\или восстановления дальнейшей работы скрипта.
Блок Finally располагается обычно в конце скрипта. Команды, находящиеся в нем, выполняются в любом случае, независимо от возникновения ошибок. Была ли  ошибка перехвачена и обработана блоком Catch или при выполнении скрипта ошибок не возникало вообще, блок Finally будет выполнен. Присутствие этого блока в скрипте необязательно, основная его задача — высвобождение ресурсов (закрытие процессов, очистка памяти и т.п.).
В качестве примера в блок Try поместим код, который читает файлы из указанной директории. При возникновении проблем блок Catch выводит сообщение об ошибке, после чего отрабатывает блок Finally и работа скрипта завершается:
try {
Get-Content -Path "C:\Files\*" -ErrorAction Stop
}
catch {
Write-Host "Some error was found."
}
finally {
Write-Host "Finish."
}

 "Some error was found."
"Finish."

Wednesday, 22 November 2017

Обработка непрерывающих ошибок в PowerShell.

Здравствуйте.

Совсем недавно меня спросили как можно обработать ошибку выполнения в PowerShell. Вопрос был про Errors Handling. И вопрос звучал на анлийском. Что-то я помнил, но смутно, так как плотно обработчики ошибок писать не доводилось. Поэтому пошел в сеть, нашел отличный материал по теме, и весь его протестировал. Материал богатый поэтому разбиваю его на две части. Уверен что вам тоже будет полезно.

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

В PowerShell ошибки делятся на два типа: прерывающие (Terminating) и непрерывающие (Non-Terminating). Как следует из названия, непрерывающие ошибки позволяют продолжить выполнение команды, тогда как при возникновении прерывающей ошибки дальнейшее продолжение выполнения команды невозможно. К примеру, у нас есть файл со списком служб, которые необходимо перезапустить следующей командой:
Get-Content -Path C:\Files\services.txt | Restart-Service

Предположим, что перезапуск одной из перечисленных служб по какой либо причине невозможен. Тем не менее можно продолжать выполнение задачи, поскольку остальные службы доступны и их можно перезапустить. Это пример непрерывающей ошибки.

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

PowerShell позволяет обрабатывать оба эти типа ошибок. Большинство ошибок в PowerShell непрерывающие, и сегодня речь пойдет о том, как их обрабатывать.

Обработка непрерывающих ошибок

Для получения ошибки возьмем службу с ″оригинальным″ названием Service. Поскольку службы этой на сервере нет, то обращение к ней стабильно будет генерировать ошибку. Запросим данные о нескольких службах командой:
Get-Service service,spooler

PS D:\Courses!!!\Done!\PowerShell\scripts> Get-Service service,spooler
Get-Service : Не удается найти службу с именем службы "service".
строка:1 знак:1
+ Get-Service service,spooler     + CategoryInfo          : ObjectNotFound: (service:String) [Get-Service], ServiceCommandException     + FullyQualifiedErrorId : NoServiceFoundForGivenName,Microsoft.PowerShell.Commands.GetServiceCommand
 Status   Name               DisplayName                          
------   ----               -----------                          
Running  spooler            Диспетчер печати     
                
Как видно из примера, PowerShell не нашел службу Service, о чем выдал ошибку и затем продолжил выполнение команды. Давайте разберемся, почему команда повела себя именно так и как это поведение изменить.

Monday, 20 November 2017

Версиoнность PowerShell.

Всем привет.

Так уже получилось что работая над ошибками в PowerShell я случайно проморгал апгрейд версии самого инструмента.

По традиции у меня была 2-я версия на моей Windows 7. Но установкой сервиспака (SP1) она в один миг поднялась до 3-й! Конечно в моем профиле PowerShell всегда в начале стоит вызов $PSVersionTable.PSVersion. Но само сообщение про текущую так примелькалось, что я его уже и не читал.)

Как обнаружил?

А наше вкусное расширение PowerTab начало вдруг выдавать ошибку вызова функции Function:TabExpansion при импорте самого модуля. Оказалось что 3-й версии PowerShell эта функция заменена на TabExpansion2.

Поэтому надо в файле PowerTab.psm1 строку

$OldTabExpansion = Get-Content Function:TabExpansion

заменить на,

$OldTabExpansion = Get-Content Function:TabExpansion2

т.е. просто добавьте 2 в конец строки.

Sunday, 19 November 2017

Перевод маски IP-адреса из префиксной формы в обычную.

Всем привет.
 
Сетевому администратору часто приходится пересчитывать маску IP-адреса из обычной формы (255.255.255.192) в префиксную (/26), и наоборот. Дело в том что префискуню форму маски легче читать или записывать, а обычную форму приходится непосредственно указывать в конфигурации сетевого интерфейса.
 
Конечно, онлайн-калькуляторов полно, но надо уметь это делать и вручную. Тем более что про такой пересчет любят спрашивать в тестах на собеседовании.
 
Как это делается?
 
Задача первая - перевод из префиксной формы в обычную.
 
Пример 1: имеем адрес 192.168.10.1/22. Префикс 22.
  1. Вычитаем биты 32-22=10
  2. если битов более 8-ми то вычитаем из низ байт 10-8=2. Это степень двойки, которая нам дает 4
  3. получаем октет маски в обычной форме 256-4=252
  4. пишем маску как 255.255.252.0. Последний октет равен 0 так как в п.2 мы вычли один байт.
 
Пример 2: имеем адрес 192.168.10.1/30. Префикс 30.

  1. Вычитаем биты 32-30=2
  2. Это степень двойки, которая нам дает 4
  3. получаем октет маски в обычной форме 256-4=252
  4. пишем маску как 255.255.255.252.

Friday, 17 November 2017

Голосовой глюк в Windows 7.

Всем привет.

Перечитывая за своей Windows 7 электронную книгу мне захотелось выпить кофейку. Но ведь Windows точно умеет читать голосом. Почему бы этим не воспользоваться? И глаза отдохнут. Еще с версии Windows ХР экранный диктор (narrator.exe) голосом Анны мог читать все что было на экране по английски. А русский текст диктор просто пропускал.



Из сети для Windows 7 было найдено простое решение. Про простоту нас заверяет каждый второй автор, видимо особо не затруднившись проверить это у себя.

Итак, нам известно что преобразование текста в речь (Text-To-Speech или TTS) производится с помощью речевых модулей (TTS Engine), которые должны устанавливаться отдельно. После установки такого модуля в системе появляется один или несколько так называемых голосов (TTS Voices). Для преобразования текста в речь рекомендуют использовать бесплатную Microsoft Speech Platform SDK 11, которая поддерживает 26 языков, включая русский.

Для ее установки на 32-битную Windows 7 необходимо:
1. Скачать 32-разрядную (x86) версию платформы (файл x86_SpeechPlatformRuntime\ SpeechPlatformRuntime.msi) с сайта Майкрософт.

2. Кроме того, необходимо установить необходимые голоса, скачав их с сайта Майкрософт. Русский женский голос Elena файл MSSpeech_TTS_ru-RU_Elena.msi.

Wednesday, 15 November 2017

Бизнес-аспект почтового спама.


Всем привет.

На днях вычищая свой корпоративный почтовый ящик обнаружил интересное сообщение в котором автор потрудился заверить меня что это точно был не "Спам".

В начале по тексту, как обычно, было рекламное предложение, а вот и сама концовка:

Полученное Вами электронное сообщение не является «Спамом» по следующим причинам:

1. Бизнес-аспект
Данное электронное сообщение является коммерческим предложением и адресовано на полученный из открытых источников электронный адрес <nul>. Под открытым источником подразумеваются деловые справочники, такие как «Желтые страницы Украины», «Бизнес-досье», «УкрБизнес» и д.р. Добавление Вами контактной информации в эти издания предполагало нахождение новых партнеров посредством телефонной, почтовой или e-mail связи.

2. Законодательный аспект
Полученное Вами электронной сообщение не является «Спамом», так как полностью отвечает требованиям Постановления КМУ No. 720 от 09.08.2005 г. и ст. 33 Закона Украины «О телекоммуникациях», не попадает под ст. 363-1 УК Украины.

3. Технический аспект
Полученное Вами электронное письмо содержит все необходимые специальные технические заголовки, рекомендованные крупнейшими мировыми почтовыми системами Google Mail, Yahoo Mail и Live/Hotmail (SPF, Precedence, List-Unsubscribe, DKIM/DomainKey, Sender-ID), а также отвечает спецификациям RFC 2822, RFC 2369 и RFC 2919.

4. Аспект Сетевого этикета
Письмо было отослано со специально созданного ящика, адрес которого в явном виде присутствует в заголовках письма, т.е. адрес отправителя — реальный, а не подставляемый, как в случае «Спама». Письмо также не содержит вирусов, фишинга и никаких других мошеннических уловок.

Автор письма постарался, сразу видно. Я могу заглянуть в ст.363-1, могу проверить служебные заголовки сообщения согласно спецификаций RFC и даже согласиться с сетевым этикетом. Но есть одно Но - я как частное лицо не размещал свой электронный адрес (адрес получателя в сообщении) в открытых источниках! Если вы уже так волнуетесь за свою информацию извольте добавить и адрес открытого источника в котором был "найден" мой электронный адрес в параграф Бизнес-аспекта. Я проверю, и тогда поговорим.

А пока это Спам, как ни старайся.)

Всего хорошего.



Английские связки при собеседовании.


Всем привет.

Написание резюме на английском языке рано или поздно приведет вас к первому интервью. Тоже на Английском.) Разумеется кто знает разговорный Английский на уровне выше среднего не испытывает особых трудностей , главное быть  в теме самого интервью если оно техническое. Тем же кто только начинает проходить подобные собеседования хочу предложить основные связки вашего диалога которые обязательно присутствуют в любом подобном разговоре, хоть по скайпу, хоть по телефону. 
 
Start:
  • It's very nice to meet you
  • Thank you very much for opportunity to meet you

Ставить точку в ответе или подталкивать к следующему вопросу надо только если вы чувствуете, что от вас еще молча что-то ожидают услышать.
Next question:
  • Have I answered your question?
  • I think I answered your question.
  • I suppose I answered your question.
  • So, should we go to the next question?
  • I suppose, that's all. I think (mean, guess), that's all.

Переспрашивать следует в случае если вы вообще ничего не поняли. Если вы не поняли вопрос повторно то подключайте интуицию, переспрашивать второй раз будет некомильфо.
Repeat question:
  • Excuse me, I didn't really (quite) understand last question. Can you repeat that, please?
  • Could you say it in different way?
  • I beg your pardon, tell me it once again?

Обычно заполнители пауз могут не понадобиться, время (слот)  на интервью ограничено и вам паузы просто так не подарят.
Pause filling:
  • I mean,
  • Let me see,
  • If you follow me,
  • If you see what I mean

Благодарности следуют, обычно, за блоком ваших вопросов к интервьюверу. Вам обязательно надо их задавать!
Finish:
  • Thank you for your time with my interview.
  • It was nice talking with you.
  • Thank you very much.
  • When should(could) I do callback?

Перечень часто задаваемых вопросов на собседовании с ответами можете почерпнуть здесь. Также рекомендую к прочтению хорошую статью "Как успешно пройти собеседование на английском".

Good luck.


 

Monday, 13 November 2017

Как настроить книгу Excel, используемую по умолчанию.

И снова здравствуйте.

Известно что каждая вновь созданная рабочая книга в Excel открывается с установками, принятыми по умолчанию.

Но что делать, если вас не устраивают какие-либо стандартные установки книги?

Меня, например, часто напрягает ситуация когда вновь вводимое число становится датой. И вернуть его в исходное состояние нет никакой штатной возможности, кроме как поменять формат ячейки и ПОВТОРНО ввести это же число.

Или вам нужно чтобы книга содержала всего один лист. Или, может быть, необходимо изменить шрифт, заданный по умолчанию, либо его размер. А может, вы хотите скрыть линии сетки, которую содержат листы. Или вам нужно, чтобы стандартный верхний колонтитул всегда выводился при печати. Изменить такого рода настройки можно в диалоговом окне Параметры Excel. Однако другие изменения требуют использования самого шаблона.

Изменение заданных по умолчанию значений в диалоговом окне Параметры Excel.

В разделе Общие диалогового окна Параметры Excel есть всего четыре параметра, управляющие настройками для новых книг. Тут вы можете указать шрифт текста, размер шрифта, режим и количество листов. Эти изменения применяются только к новым книгам, уже созданных книг они не коснутся. Увы все.

Thursday, 9 November 2017

Новая книга "My Excel: tips & tricks”

Всем привет.

Занимаясь с очередным онлайн-курсом из серии “Mastering Excel” я вдруг обнаружил что у меня накопился интересный материал для небольшой книжки. Так как сами заметки в блоге были разбросаны по годам то было принято решение оформить это все в одном месте.

Так через пару часов родилась книжка “My Excel: tips & tricks”. И я поспешил ее выставить вам для тщательного ознакомления. Все реальные случаи из моей практики. Описанные приемы в основном касаются версии Excel 2016, но часть из них стартовала и с 2010-го. Увы, 2013-й проскочил мимо меня.

Заранее прошу прощения если в работе использовал парочку не своих рисунков без явного указания URL источника.

Приятного чтения.
Как обычно свободный доступ для всех в моей Библиотеке.

Одним PDF-файлом для скачивания выложу чуть позже.

Wednesday, 8 November 2017

Совместимость между VBA, VBScript и Powershell.

Всем привет.

Как оказалось наш Excel это мега-инструмент для администратора!

В код VBA в Excel можно легко вставлять блоки VBS кода и все будет успешно работать.

Вот вам пример простенькой смеси из VBА и VBS кода, MyVBScript() определяеят версию ОС, 7ка или нет, и пишет результат в активную ячейку.
Sub MyVBScript()
On Error Resume Next
Set objCollection = GetObject("winmgmts:\\.\root\cimv2").ExecQuery("SELECT Name FROM Win32_OperatingSystem")
For Each objItem In objCollection
    strOS = objItem.Name
Next
'MsgBox strOS
ActiveCell.Select
If InStr(1, strOS, " Vista ", vbTextCompare) > 0 Or InStr(strOS, " 7 ") > 0 Then
    ActiveCell.FormulaR1C1 = "Windows 7"
Else
    ActiveCell.FormulaR1C1 = "It isn't Win7"
End If

End Sub


Здорово, не правда ли?
Но возьмем пример попрактичнее. Администратору надо было вручную поменять пароль главного админа на всех хостах в локальной сети. Но администратор был в меру ленив и решил использовать любимый Excel!

Tuesday, 7 November 2017

Как вам "Сайт не принадлежит вашему uID-аккаунту"?

Всем привет.

Месяц тому я еще нормально входил на админку своего сайта на Ucoz по паролю, без uID. А неделю тому получил сообщение на входе в админку сайтв  "Сайт не принадлежит вашему uID-аккаунту."
 
Это логично. Сайт действительно не принадлежит  моему uID-аккаунту, потому что он не был к нему подвязан. Этот сайт в свое время спокойно мигрировал с narod.ru. И вход в админ панель успешно работал по паролю. Судя по сообщеним в сети сообщение "Сайт не принадлежит вашему uID-аккаунту" получают многие, некоторым помогают советы бывалых с форума, другим наоборот советы либо не помогают либо ухудшают положение еще больше. Вплоть до ситуации когда владельцу сайта приходиться доказывать свои права на контент.
 
Ucoz предлагает свою опцию uID как панацею для безопасного входа ко всем своим сайтам созданным в системе Ucoz.

Напомню, uID - это глобальный профиль который используется для авторизация в системе uCoz и обладает несколькими интересными особенностями:
  • uID - это уникальный идентификатор, который позволяет войти практически на любой сайт системы uCoz без регистрации на каждом сайте;
  • uID - это ваш уникальный глобальный профиль, с помощью которого вы можете настроить отображение своего профиля, на сайтах, где вы авторизируйтетесь;
  • User-Bar - удобная панель управления, которая позволит вам: лучше взаимодействовать с сайтом, на котором вы находитесь, удобно просматривать новые комментарии в блогах/новостях.
Но в случае с моим сайтом ребята с Ucoz-а явно перемудрили.

После недолгих поисков я нашел причину почему так происходит. Допустим вы залогинены в свою uID к которой не привязан ваш очередной сайт XYZ. Не выйдя из uID вы пытаетесь зайти по паролю в админку сайта XYZ. Тут же Ucoz выполняет сверку с текущим uID и переключает ваше приглашение на вход по uID. Все, вы попались! Разумеется текущий uID не подойтет ибо сайт к нему не привязан. И вы получаете "Сайт не принадлежит вашему uID-аккаунту." А другого uID вы не знаете, того самого который для вашего сайта XYZ. Почему не знаете? Потому что сайт мигрировал с narod.ru и он не создавался с нуля в cиcтеме Ucoz.

Прелесть ситуации в том что даже выполнив выход из uID приглашение входа в админку сайта XYZ остается только по uID. Которая мне неизвестена!

Запрос "Что делать?" был отправлен в службу поддержки Ucoz. Ответа ждем вторую неделю.

Monday, 6 November 2017

Автоматизация стандартного приглашения в Windows.

Всем привет.

В марте этого года я описывал кастомизация стандартного приглашения в Windows 7. Для удобства сделал себе настройку такого приглашения через PowerShell.

powershell -NoProfile -ExecutionPolicy Unrestricted -File bg.ps1

А в самом файле bg.ps1 пишем:

1) копируем свое изображение в папку
Copy-Item backgrounddefault.jpg  C:\Windows\System32\oobe\Info\backgrounds
Имейте ввиду что по умолчанию эта папка с правами ReadOnly для простого пользователя.

2) изменяем нужный нам ключ реестра в 1.
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\\Authentication\LogonUI\Background" -Name OEMBackground -Value 1

3) и проверяем что он изменился.
Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\\Authentication\LogonUI\Background" -Name OEMBackground

Не хотите использовать PowerShell?
Напоминаю альтернативный способ из командной строки Windows:
reg add "HKEY_LOCAL_MACHINE\software\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\Background" /v OEMBackground /t REG_DWORD /d 1 /f

Теперь меня по утрам встречает такой вот рыжий котяра.


И провожает тоже он. Уже веселее! Можно проявить фантазию и кастомизировать саму картинку под приглашение ввести пароль, к примеру, на блюдечке).

Удачи.

Saturday, 4 November 2017

Поиск картинок нужного размера в Google.

Всем привет.

Моя цель на сегодня - найти картинки по ключевому слову которые не меньше размера в 1024 пикселей как по вертикали так и по горизонтали. Т.е. мне не нужны картинки у которых хотя бы один размер меньше этой цифры. Желательно ориентации Пейзаж, но это вторично.

Обычный поиск мне предлагает размер "Больше чем... 1024х768". При этом в результат поиска попадает все что имеет хотя бы один размер больше 1024 пикселей. Но другой при этом может быть каким угодно малым.

Чтобы покрыть условия моей задачи я должен выбрать, как минимум, формат больше чем 2 Мп (1600х1200). Но ведь эти размеры намного больше 1024.(

Как альтернативный вариант в параметрах "Обычный поиск" есть еще опция "Точный размер", но это резко ограничивает результаты моего поиска. Логично.


Идя навстречу пользователям Google ввел более продвинутый по параметрам "Расширенный поиск" https://www.google.com/advanced_image_search


Для моей задачи по сравнению с обычным поиском добивалась опция "Формат картинок". Теперь я могу выбрать точную форму, например, что мне нужен "горизонтальный прямоугольник" в качестве картинки на desktop. Уже что-то. Но "Расширенный поиск" таковым считает любое превышение размера по горизонтали над вертикальным.)

Я пытался поправить саму строку поиска Google (URL), но там кроме магических параметров biw=1816 и bih=950 ничего не нашлось, и их правка на что-то иное на результат поиска не влияет. Загадка.

Наверное то что я хочу не логично в алгоритмах Google.
Я не прав?



Friday, 3 November 2017

Логические блоки SQL.

Всем привет.

Говорят что вторым языком после Английского будущий программист должен знать SQL. SQL это язык структурированных запросов (Structural Query Language).  

SQL необходим для создания, изменения и удаления данных в реляционных базах данных. Есть стандартный SQL, но - производители СУБД включают в него некоторые собственные наработки - так появились различные диалекты SQL (Transact, PL/SQL и другие).

Существует несколько блоков SQL: определения данных DDL, манипуляций данными DML, определения доступа к данным DCL, управления транзакциями TCL.

Иногда в тестах спрашивают про разницу между DDL, DML, DCL и TCL  командами. Так в чем же она?

DDL - (Data Defenition Language) предложения для определения структуры базы данных или схемы. 

Примеры:
CREATE - создает объекты базы данных (таблицы, представления и т.д.)
ALTER - изменяет структуру и объекты базы данных
DROP - удаляет объекты базы данных
TRUNCATE - удаляет все записи из таблицы
COMMENT - добавляет комментарии в словарь данных
RENAME - переименовывает объект (alter table <old_name> rename to <new_name>)

DML - (Data Manipulation Language) предложения для управления данными. 

Примеры:
SELECT - возвращает данные из базы данных
INSERT - вставляет данные в таблицу
UPDATE - обновляет существующие данные в таблице
DELETE - удаляет все записи в таблице
MERGE - UPSERT операция (insert или update)
CALL - вызов подпрограммы PL/SQL или Java
EXPLAIN PLAN - предоставляет план запроса
LOCK TABLE - управление параллелизмом

Wednesday, 1 November 2017

Keywords for your Resume.

Всем привет.

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

Что должно, а чего не должно быть в вашем резюме штука лукавая, многое зависит от человека который будет его читать. Советы от бывалых можно глянуть вот здесь. Даже они иногда расходятся по некоторым пунктам на все 100. Поэтому главный совет один - не пишите то чего не знаете и чего не было. А то что знали, но подзабыли указывайте из расчета что сможете быстренько перед собеседованием освежить его основные моменты в памяти.

Так вот сегодня, исходя из своего опыта составления резюме, могу рекомендовать ключевые слова для написания резюме на Английском.

Начнем с главных глаголов которыми вы можете описать ваши достижения и опыт.

Power verbs for Resume.

Did: implemented, handed, executed, carried out, processed, initiated, faclilitated, conducted.

Made: developed, designed, produced, devised разработано, formulated, established, created, fostered обучено, achieived     достигнуто, improved      улучшено, trained(mentored) обучался, managed       направлено, created       создано, resolved      решено, volunteered   по инициативе, influеnced    оказано влияние, increased/decreased  увеличено/уменьшено, made ideas       подано идею, negotiated    договорено, launched      запущено, revenue/profits получено доход/прибыль, won выиграно.

Helped: assisted, aided, demonstrated, provided.

Led to: managed, coordinated, supervised, oversaw, spearheaded быть инициатором, directed.

Researched: analyzed, diagnosed, measured.

Organized: maintained, arranged.

Communicated: collaborated, reported, highlighted.

Got Result: increased, generated, indentified, strengthened, improved, accomplished.

Следующий раздел подходит больше для интервью где сможете описать свою прошлую работу (фирму).

Keywords about your prev job.

My previous company offers, provides, specializes in, sell is in _ business.

Present: is based in, has around _ offices, has production sites, has bracnhes, is a market leader.

Past: was set up, established, founded, took over, acquired, merged, entered.

Future: take on, launch, expand, go public, be one of the top.

Places:  subsidiary, agency, branch, factory, call center, service center, headquarters, warehouse, outlet, complaints.

Departments: R&D (Research and Development), Customer Service, HR (Human Resources), Sales & Marketing, Production, Finance, Legal, Logistics, PR (Public Relations), IT.

My job was: my job involves, I sped most of my time to, I deal with, My role is to, I’m charge of, I’m responsible for, I repeat to, My line manager is.

Positivities moments of my job: creative, challenging, exciting, glamorous эффектный, rewarding, satisfying, secure, varied, well-paid, worthwhile.

Negatives moments of my job: badly-paid, boring, tedious, dull, dnagerous, hard, repetitive, routine, stressful, tiring, tough.

Types of working: flextime, teleworking, freelance, shift-work, job share, career break, long-hour cultures, part-time, full-time.

My tasks are(were): implement, interview, make, maintain, manage, monitor, negotiate, process, supervise, write, get down to, tackle энергично браться, carry out, perform, complete, fulfil, succeed in, assign, set.