Поиск по этому блогу

вторник, 26 июня 2012 г.

Запрос к MSSQL на Perl из Linux

Собственно используем FreeTDS, /etc/freetds/freetds.conf:
[orion]
        host = 10.254.103.38
        port = 1433
        client charset = UTF-8
        tds version = 8.0
        text size = 20971520
Устанавливаем tdsodbc, unixodbc и libdbd-odbc-perl:
$ sudo aptitude install tdsodbc libdbd-odbc-perl unixodbc
Настраиваем UnixODBC, /etc/odbcinst.ini:
[FreeTDS]
Description = FreeTDS
Driver      = /usr/lib/odbc/libtdsodbc.so
Setup       = /usr/lib/odbc/libtdsS.so
UsageCount  = 1
Ну вот, теперь пишем запрос в Perl'е:
#!/usr/bin/perl -w

use strict;
use DBI;

my $dbh = DBI->connect('dbi:ODBC:server=orion;port=1433;driver=FreeTDS;tds_version=8.0', 'username', 'password', {PrintError => 0});
die "Unable for connect to server $DBI::errstr" unless $dbh;

my $rc;
my $sth;
    
#$sth = $dbh->prepare('select @@servername');
$sth = $dbh->prepare('SELECT [Caption] AS conn_details, 0 AS cnt_conn_details FROM [OrionDB].[dbo].[Nodes] GROUP BY [Caption] ORDER BY conn_details');
if($sth->execute) {
    while(my $dat = $sth->fetchrow_hashref) {
        foreach my $k (sort keys %{ $dat }) {
            print $k,"=>",${ $dat }{$k},"\n";
        }
    }
}

Чтение UTF16 в Perl

Попалась чудная программа, которая разработана под Windows и хранит свои данные хоть и в текстовом формате, но не в UTF8, который является привычным для Linux, а в UTF16.
Встала задача прочитать этот чудный файл в Perl'е, да так чтобы его содержимое было корректно воспринято.
Оказалось всё не просто, а очень просто:
foreach my $orionmap ( sort @orionmap ) {
    open my $FMAP, "<:encoding(utf16)", "$orionmap" || die "Can't open $orionmap for read: $!\n";
    while (<$FMAP>) {
        chomp;
        chop if /\r$/;
        print;
        print "\n";
    }
    close $FMAP;
}
Потом уже нашёл статью на Хабре где народ говорит о возможных граблях. Что-ж, как говорил один знакомый людоед: "Пожуём - увидим!".

среда, 6 июня 2012 г.

Сброс пароля учётной записи в Windows7


Случается, что пароль или забылся(особенно если он был сложный), или потерялся. В данном примере мы не будем пытаться узнать забытый пароль, мы его просто сбросим или поменяем.
Нам понадобится установочный диск Windows7 для активации скрытой учетной записи Администратора. Способ активации заключается в правке реестра из установочной среды.
Загружаемся с диска и нажимаем Shift+F10 для запуска командной строки. Вбиваем regedit и запускаем редактор реестра. Выделяем раздел HKEY_LOCAL_MACHINE и в меню выбираем Файл -> Загрузить куст.. (File -> Load hive..). Нам нужен будет файл с именем SAM, который находится в каталоге \Windows\System32\config на диске, где установлена Windows7. В запросе ввода имени куста — пишите что угодно. Теперь выбираем раздел HKEY_LOCAL_MACHINE\имя_куста\SAM\Domains\Account\Users\0001F4 и дважды кликаем по ключу F. Откроется редактор, в котором нужно перейти к первому числу в строке с номером 0038, это будет число 11. Меняем его на 10. На этом моменте осторожнее — поменять надо только это число, ничего не добавляя и не удаляя. Теперь выделяем загруженный куст HKEY_LOCAL_MACHINE\имя_куста\ и в меню выбираем Файл -> Выгрузить куст… (File -> Unload hive…), подтверждаем выгрузку куста.
Всё. Вынимаем диск и перезагружаемся. Теперь можно зайти под учетной записью Администратора(по умолчанию без пароля) и в панели управления пользователями поменять забытый пароль.

ps: Мопедик не мой, я только объявку дал ;)

вторник, 5 июня 2012 г.

Skype + PulseAudio

С переходом на KDE как-то незаметно в жизнь вошёл PulseAudio. Недавно заметил, что в Skype перестал работать микрофон, хотя пока под Gnome использовался ALSA такой проблемы не существовало.
Решение достаточно простое - установить пакет pavucontrol и настроить с его помощью ввод с микрофона
aptitude install pavucontrol
Всё дело в том, что при первоначальной установке PulseAudio пакет pavucontrol не устанавливался автоматически, хотя именно с его помощью и настраивается PulseAudio.
А так всё достаточно просто и понятно.