вторник, 6 марта 2012 г.

Как системные администраторы поздравляют с 8 марта

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

Реализовывать это будем посредством утилитки от Microsoft Bginfo.exe. Она позволяет выбирать изображение на рабочий стол и лепить текст поверх картинки.

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

В bginfo создаем новый файл настройки вида:

Где <random> будет наше выбранное поздравление.
Для создания поля <random> жмем custom... И выбираем vbs файл формирования поздравлений.

Пример файла:


Randomize()
randomNumber=Int(5 * Rnd())
'MsgBox randomNumber


'randomNumber = 0


Select Case randomNumber
Case 0
text = "Желаем вам всего, чем жизнь богата:"& vbCrLf _
    &"Здоровья, счастья, долгих лет,"& vbCrLf _
    &"Пусть этот праздник — день 8 Марта -"& vbCrLf _
    &"В душе оставит добрый след!"& vbCrLf


Case 1
text = "Желаю счастья и любви."& vbCrLf _
    &"Они дороже всех подарков."& vbCrLf _
    &"И пусть все сбудутся мечты "& vbCrLf _
    &"В прекрасный день — 8 МАРТА!"& vbCrLf


Case 2
text = "Желаем, чтоб радости было много,"& vbCrLf _
    &"Чтоб радость верной спутницей была, "& vbCrLf _
    &"И чтоб всегда на жизненной дороге "& vbCrLf _
    &"Тебе хватало ласки и тепла."& vbCrLf


Case 3
text = "Пусть сердце в такт стучит капели, "& vbCrLf _
    &"Пусть канут в прошлое метели, "& vbCrLf _
    &"И пусть в весенних хороводах "& vbCrLf _
    &"Забудет сердце о невзгодах."& vbCrLf


Case 4
text = "Спасибо вам за вашу доброту!"& vbCrLf _
    &"За ваше белорусское терпенье,"& vbCrLf _
    &"За лишний нерабочий день в году,"& vbCrLf _
    &"За день обычный, ставший воскресеньем!"& vbCrLf
End Select
echo text
'MsgBox text

Были небольшие проблемы отображения строк, поэтому формирование четверостишия такое сложное. Решать проблему не было времени - оставил как есть.
Нажав на Background можно выбрать красивую праздничную картинку и настроить ее положение.
Посмотрим на результат выполнив: C:\Windows\temp\Bginfo.exe C:\Windows\temp\pozdr.bgi /timer:0 /NOLICPROMPT
Все нужные файлики я отлаживаю в директории C:\Windows\temp\ для дальнейшего распространения в MS AD.

Можно скопировать батник в автозагрузку на нужном компе и все, но у нас в сети порядка 700 компов и сделать это будет трудоемко. Мы пойдем дальше: Будем распространять с помощью групповой политики.

У нас на предприятии домен MS Active Directory 2003. Все пользователи имеют логины, которые идентичны табельным номерам сотрудников. Не составляет труда подключится к базе сотрудников и вытащить ФИО и Департамент, для отображения в поздравлении.
Если у вас логины создавались сумбурно, можно использовать промежуточную таблицу для получения личной информации. 


name1                 name2

user99                 4534
user65                 4534


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


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

8marta.vbs
Dim FSO
Dim WshShell

Set FSO = CreateObject("scripting.filesystemobject") 'Объявляем объектную переменную
Set WshShell = WScript.CreateObject("WScript.Shell") 'Объявляем объектную переменную

'declare the variables 
Dim Connection
Dim ConnString
Dim Recordset
Dim SQL

'define the connection string, specify database driver
ConnString= "Driver=SQL Server;SERVER=SERVER;Database=kadr;Trusted_Connection=Yes"  

'declare the SQL statement that will query the database
Set objNet = CreateObject("WScript.NetWork") 

'SQL = "SELECT fio, nkCex  FROM marta where tn="+objNet.UserName

'create an instance of the ADO connection and recordset objects
Set Connection = CreateObject("ADODB.Connection")
Set Recordset = CreateObject("ADODB.Recordset")

'Open the connection to the database

Connection.Open ConnString

'Open the recordset object executing the SQL statement and return records 
Recordset.Open SQL,Connection

'first of all determine whether there are any records 
If Recordset.EOF Then 
Else 
'if there are records then loop through the fields 
Do While NOT Recordset.Eof   
'Recordset("fio")


If FSO.FolderExists ("C:\Windows\TEMP")=False Then 'Проверяем папку. Если нет то создаем и копируем в нее файл на исполнение.
FSO.CreateFolder("C:\Windows\TEMP")
FSO.CopyFile "\\FS1\Releases\BgInfo\Bginfo.exe", "C:\Windows\TEMP\Bginfo.exe" 'здесь нужно поправить путь
Call RunBgi
Else
If FSO.FileExists("C:\Windows\TEMP\Bginfo.exe")=true Then 'Проверка файла. Вдруг кто TEMP почистил
Call RunBgi
Else
FSO.CopyFile "\\FS1\Releases\BgInfo\Bginfo.exe", "C:\Windows\temp\Bginfo.exe"
Call RunBgi
End If
End If



Recordset.MoveNext     
Loop
End If


Sub RunBgi ()
FSO.CopyFile "\\FS1\Releases\BgInfo\pozdr.bgi", "C:\Windows\temp\pozdr.bgi" 'копируем предварительно созданный файл конфигурации.
FSO.CopyFile "\\FS1\Releases\BgInfo\getname.vbs", "C:\Windows\temp\getname.vbs" 'копируем предварительно созданный файл scr.
FSO.CopyFile "\\FS1\Releases\BgInfo\getndep.vbs", "C:\Windows\temp\getndep.vbs" 'копируем предварительно созданный файл scr.
FSO.CopyFile "\\FS1\Releases\BgInfo\random.vbs", "C:\Windows\temp\random.vbs" 'копируем предварительно созданный файл scr.
FSO.CopyFile "\\FS1\Releases\BgInfo\bg8m.jpg", "C:\Windows\temp\bg.jpg" 'копируем предварительно созданный файл bg.
WshShell.Run "C:\Windows\temp\Bginfo.exe C:\Windows\temp\pozdr.bgi /timer:0 /NOLICPROMPT"
End Sub



'close the connection and recordset objects to free up resources
Recordset.Close
Set Recordset=nothing
Connection.Close
Set Connection=nothing

Для вывода ФИО сотрудника, делаем custom поле (по примеру Random) и получаем ФИО из вашей базы.

'declare the variables 
Dim Connection
Dim ConnString
Dim Recordset
Dim SQL

'define the connection string, specify database driver
ConnString= "Driver=SQL Server;SERVER=SERVER;Database=kadr;Trusted_Connection=Yes"  

'declare the SQL statement that will query the database
Set objNet = CreateObject("WScript.NetWork") 

SQL = "SELECT  fio FROM marta where tn="+objNet.UserName

'create an instance of the ADO connection and recordset objects
Set Connection = CreateObject("ADODB.Connection")
Set Recordset = CreateObject("ADODB.Recordset")

'Open the connection to the database

Connection.Open ConnString

'Open the recordset object executing the SQL statement and return records 
Recordset.Open SQL,Connection

'first of all determine whether there are any records 
If Recordset.EOF Then 
Else 
'if there are records then loop through the fields 
Do While NOT Recordset.Eof   
Echo Recordset("fio")
Recordset.MoveNext     
Loop
End If

'close the connection and recordset objects to free up resources
Recordset.Close
Set Recordset=nothing
Connection.Close
Set Connection=nothing

Все делалось с MS SQL, но я думаю, не составит труда обратится к другим источникам данных.


Если у вас MS AD создаем групповую политику и при Входе пользователя выполняем данный скрипт 8marta.vbs.

Все. Извините что несколько хаотично. Тороплюсь, праздник не за горами.

понедельник, 23 января 2012 г.

Windows 7 не не получает адрес с dhcp под управлением Windows Server 2003 при входе в домен

симптомы: ipconfig /renew - Отказано в доступе.
Быстый фикс.
1. Выводим из домена.
2. Приводим групповую политику в исходное состояние.
secedit /configure /cfg %windir%\inf\defltbase.inf /db defltbase.sdb /verbose
3. Создаем в Active Directory контейнер Computers_Win7. В Group Policy Manager на данном контейнере ставим опцию Block Inheritance (Запрещаем наследование политик).
4. Вводим компьютер в домен, ждем запроса на перезагрузку. Не перегружаем.
5. Переносим учетную запись компьютера в контейнер Computers_Win7. Перегружаем.
6. Все должно работать.

среда, 4 января 2012 г.

Что больше всего ищут в интернет

Что больше всего ищут в интернет узнаем при помощи google insights например за последний месяц в разделе хобби и развлечения как-то так:


вторник, 3 января 2012 г.

Используем Blogger как записную книжку

Да кстати а почему бы и нет? Что из привычных фишек notes менеджеров тут присутствует:

  • мобильный клиент
  • тэги
  • поиск (тут чуточку проблемы с индексацией)
  • запись изображений
Ну а главное, недавнешнее слияние blogger и google+ позволяет расшаривать заметки для своих контактов. Правда, мобильный клиент ещё не обновился до расшаривания.

Создаем блог. В настройках ставим: Читатели блога "только эти читатели". Добавляем мобильный шаблон и если нужно настраиваем виджеты. Я поиск добавил. Как бэ все.


вторник, 12 июля 2011 г.

Изучаем blogger и AdSense (часть первая)

Потиху перевожу все свои задачи на платформу "корпорации добра".Делаю заметки на будущее и делюсь своими впечатлениями.
Вот решил наконец-то попробовать этот (blogger) сервис google. Первые впечатления - очень даже ничего. Всё просто и со вкусом. Напрягает буквочка "ё" в проверке правописания.
Внимание: новый интерфейс блоггера http://draft.blogger.com. Конечно он ещё бета, но решил изучать сразу на нём.

 Особенно впечатлил AdSense. О нём поподробнее:

Получение доступа и настройка сервиса Google Music (для пользователей не из США)

Прочитав новости с Google I/O 2011, я был приятно удивлён нововведениями которые были анонсированы гуглом. Одним из самых желанных стал Google music (давно хотел упорядочить свою музыкальную коллекцию, а тут ещё возможность хранить все в облаке). По началу, я отложил пробы в долгий ящик из-за невозможности работы с сервисом не из США, но недавно узнал о некоторых лазейках, которые позволили все-таки осуществить эту затею.
И так приступим:
Дано: компьютер под управлением Windows XP, планшетный ПК под управлением android 2.2 Huawei S7, "умный" телефон на том же android Huawei U8150.
Надо: Организовать синхронизацию музыкальной коллекции между этими устройствами посредством использования сервиса http://music.google.com .
Для регистрации нам, конечно же, понадобится аккаунт google (описание создания которого я опущу).
Далее проследуем по адресу  http://music.google.com и увидим, что данный сервис находится в режиме beta-тестирования и еще к тому же доступ закрыт для нашего региона . Для регистрации необходимо получить инвайт. Воспользуемся услугами прокси сервера, находящегося в США. Нам нужно отыскать рабочий прокси сервер, и настроить браузер.
В поисковике достаточно ввести "Список бесплатных прокси USA" и найдётся большое количество сайтов с адресами. Воспользуйтесь любым на ваше усмотрение.
Соответственно настройте свой браузер. На примере Хрома: (Настройки - расширенные - Изменить настройки прокси сервера - "Network Name" - Параметры)

Заходим на адрес  http://music.google.com и вводим свою учетку google.
Теперь самое сложное: ждем пару недель, пока к вам на gmail придет инвайт. Мне пришел через полторы недели (высылка приглашений происходит волнами, через определённый промежуток)
Ну вот, наконец вы получили долгожданный инвайт. Заходим на сервис и качаем утилиту для заливки музыкальной коллекции в облако http://music.google.com/music/listen#manager_pl. Предварительно необходимо подготовить коллекцию к закачке: Конвертировать тэги mp3 в utf8.
Как это сделать для windows смотрим здесь: Конвертирование mp3 тэгов из кодировки Windows 1251 в UTF8.
Обложки альбомов должны храниться в папке альбома с названием файла "cover.jpg".
После того как ваша музыкальная коллекция оптимизирована, приступаем к заливке:
Я выбрал простой способ, указав папки где хранятся мои записи. После добавления утилита автоматически сканирует папки на присутствие аудио файлов и закачивает их в облако. Закачка занимает достаточно большое количество времени. Ограничение по количеству композиций - 20 000, чего мне вполне достаточно. 
Вот сам вид облачного плэйера:
Теперь приступим к установке андроид приложений на мобильные устройства.
Приложение Google music в маркете не доступно для нашего региона. Есть два способа обойти эту проблему:
  1. Использовать приложение MarketEnabler для разлочки маркета на оператора T-Mobile (USA). Требуется root доступ на устройстве.
  2. Просто скачать последний клиент Google Music с 4pda.ru.
Если выдаёт ошибку при скачке приложений - зарегистрируйтесь на 4pda.
Первый способ у меня не прокатил, т.к. для моих устройств приложение недоступно.
Устанавливаем клиент, при запуске он спросит разрешение на подключение аккаунта google - разрешаем. Пункт в меню "Параметры" позволяет указать с какой учетной записью google нужно работать и настроить параметры синхронизации (для экономии денежек указываем синхронизацию через WiFi). Сразу после запуска этот пункт может быть недоступен, почему-то требуется время на одобрение устройства со стороны сервиса (у меня заработало через 4 часа).
В Web интерфейсе, нажав пункт меню "Settings" мы увидим все подключенные устройства:

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

Для телефона повторяем всё тоже самое и получаем синхронизацию музыкальной коллекции, хранящейся в облаке, с тремя устройствами.

понедельник, 11 июля 2011 г.

Конвертирование mp3 тэгов из кодировки Windows 1251 в UTF8

Как конвертировать тэги mp3 в utf8? Я делал это посредством foobar и плагина foo_chacon.
Подключение foo_chacon в foobar (Preferences - Components - Install ...)
Добавляем свою музыкальную коллекцию в foobar, выделяем все трэки - контекстное меню - Tagging - Fix metadata Charset.
 Настройки как в окошке ниже
Кнопка Apply и ждем окончания процесса.