пятница, 17 августа 2012 г.

Собираем драйвер QPSQL для Qt4.

Пришлось по работе написать простое приложение для парсинга файла.Т.к приложение будет работать под виндами, то столкнулся с тем что при установки QtSDK и библиотек Qt, отсутствует драйвер для PostgreSQL. Пока рылся в интернете сломал мозг от тех инструкций что там написаны. Я ставил из offline sdk, в котором по умолчанию отсутствует исходники(QtSource). Поэтому запускаем SDKMaintenanceTool и доставляем исходники. Потом ставим PostgreSQL, но только 32-битный,желательно в корень чтобы не было пробелов в путях, я установил в C:\PostgreSQL, и добавляем в переменные PATH, пути к каталогам bin, lib, include. У меня пути были такие:
c:\PostgreSQL\bin\
c:\PostgreSQL\lib\
c:\PostgreSQL\include\

SDK я  ставил по умолчанию в C:\QtSDK. Далее запускаем консоль, "Пуск->Все программы->QtSDK->Desktop->Qt 4.7.4 for Desktop (MinGW)", если используете MS Visual Studio, то выбираем консоль MSVC, в зависимости от используемой MS Visual Studio и версии библиотеки Qt. После запуска идём к исходникам драйвера.

cd C:\QtSDK\QtSources\4.7.4\src\plugins\sqldrivers\psql 
Примечание: у меня библиотека версии 4.7.4, если Вы используете другую версию библиотеки, то должны компилировать драйвер для своей версии. 

Далее выполняем:
qmake -o Makefile "INCLUDEPATH+=c:\\PostgreSQL\\include" "LIBS+=c:\\PostgreSQL\\lib\\libpq.lib" psql.pro

После чего выполняем:
mingw32-make install clean -f Makefile.Debug
mingw32-make install clean -f Makefile.Release

После чего создаём простое консольное приложение и смотрим список появившихся драйверов:
#include <QtSql>
#include <QtCore/QCoreApplication>
#include <QDebug>
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    qDebug() << QSqlDatabase::drivers();
    return a.exec();
}
Вывод должен быть примерно таким

 
Вот и всё. Приятной работы. :)

пятница, 6 апреля 2012 г.

3ware/ошибка 3dm2 error 404/

Столкнулся с проблемой, не работает 3dm2 от 3ware, на Windows Server 2008 R2. Вот решения.


16625, Microsoft security bulletin MS12-006 and 3DM2 SSL
3DM2 not accessible using IE8 or IE9, on some platforms, after Microsoft KB2585542 update
A Microsoft security bulletin, MS12-006, was recently released that addresses vulnerabilities with the SSL/TLS protocols.
Unfortunately, the update is affecting how the LSI 3ware 3DM2 interface is accessing a secure https session.
Because of the changes made to a number of dll files, users are no longer able to access the 3DM2 interface after applying
KB 2585542 (for Windows Vista, Windows 7 and Windows 2008).You can find more information about this security bulletin below:
MS12-006: Description of the security update for Webio, Winhttp, and schannel in Windows: January 10, 2012
MS12-006: Vulnerability in SSL/TLS could allow information disclosure: January 10, 2012
What are the symptoms?
Which platforms are affected?
A newer version of 3DM2 is now available, but only the binary file (and not the installer).
To install it:
For Windows, the binary is copied by default into the c:/Program Files/3ware/3DM2 folder. The file name is 3dm2.exe.
When attempting to access the 3DM2 interface, the user will be directed to a 'Internet Explorer can not find that webpage'
after accepting the certification.
The issue affects 64-bit(x64) version of Windows Vista, 7 and Windows Server 2008, with or without SP1,
using Internet Explorer 8 (IE8) or Internet Explorer 9 (IE9); and, presumably, all versions of Internet Explorer.
How to resolve the issue?
There are currently several solutions for this issue. However,
the simplest recommended solution is to postpone installation of KB 2585542 or uninstall KB 2585542 if you are already effected.
1. Install 3DM2 as you normally would.
2. Stop the 3dm2 service (Windows) or daemon (Linux/FreeBSD).
3. Copy the attached binary and overwrite the current binary.
4. Restart the service/daemon (or reboot the system).

http://support.microsoft.com/kb/2585542
http://support.microsoft.com/kb/2643584

Взято отсюда. http://kb.lsi.com/KnowledgebaseArticle16625.aspx
или удалить обновление Microsoft KB 2585542.

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

Битый HDD и как можно на нём работать

Попал ко мне ноут ASUS. Всё в отличном состоянии, 2 гига рамы, проц на 2 ядра, дискретная графика. Всё гуд, только винт весь битый и ничего не работает. Windows ставится, но не загружается. Linux ставится, загружается, но тормозит жестока, работать невозможно, даже в нете. И так внутри ноута диск на 160 гигов. Сначала начал делать ремап битых кластеров, но их было столько много что за 18 часов только чуть более 70 гигов просканировало и толку с этого было никакого. В итоге родилась идея. Нужно найти рабочие участки, с хорошим временем доступа(не более 200мс), и собрать в один логический том(оно же называется LVM), а его уже на разделы делить и систему ставить. В наличии была DOS'овская программка Vicotria 3.51, с её помощью были найдены участки где скорость чтения не превышало 200мс. В итоге нашлось 6 участков. Самый большой на 5 GB, самый маленький на 400 MB, в среднем участки были на 1.4 гига, Что в сумме дало 14 гигов. Windows 7 и  Windows XP с LVM разделами работать не умеет,а вот Linux самое то. Для интернета и стандартной офисной работы сойдёт. Что делает стандартный офисный сотрудник? Сидит в интернете, редактирует документы или таблицы, работает в 1С. Всё это можно делать и из под Linux, а так же слушать музыку и фильмы смотреть. И так приступим.Полностью все найденные участки расписывать не буду, покажу пример только на одном. Victoria показала что есть чистый участок от 235000000 LBA до 246000000 LBA. Рассчитываем сколько же это байтов. Каждый сектор равен 512 байтам. Считаем: 235000000 * 512 / 1024 / 1024 = 114746 MB, 246000000 * 512 / 1024 / 1024 = 120117 MB. Разница между начало и конечной точкой 5371MB. Далее находим все участки и высчитываем в каком месте они находятся. Далее переходим к установке системы. Из всего Огромного количества разных линуксов. Я предпочитаю OpenSUSE. Вполне нормальный дистрибутив. Не нужно постоянно вручную править конфиги, большое количество программного обеспечения, есть панель управления как Windows, ну или похожа очень на неё. Поставил и забыл что называется. 4-й год его использую, есть косяки но с ними можно смириться. Ставим систему. У меня был образ на DVD-диске OpenSUSE 12.1 x86_x64, т.е 64-х битная система(32-х битная версия тут). Грузимся с диска выбираем параметры "под себя" и доходим до разбивания дисков. Нажимаем кнопку "Создать разметку". Далее в разделе "Жёсткие диски" находим свой диск, у меня это был sda, кликаем на него. Теперь высчитываем с какого по какой цилиндр находятся наши участки. 114746 / 7,84 = 14635 и 120117 / 7,84 = 15321. И делаем разметку диска. Если получилось более 3 участков, то советую после первого создать дополнительный раздел, а в нём создавать логические диски. Сначала создаём основной раздел и монтируем его в /boot, размер не большой, метров 500-900 . После этого идём в "Управление томами", там создаём группу томов, я её назвал all и уже в этой группе создаём логически тома. Я создал 2 тома swap и root монтировались они соответственно в swap и / . home  решил не создавать из-за недостатка места. Создание и форматирование разделов заняло около часа. Установка прошла за 20 минут, как и всегда :-) . Настройка еще 15 минут. Готовая система через пару часов обеспечена. В зависимостей от износа и повреждения поверхности, диск может проработать еще пол-года. Не рекомендуется хранить на таком диске очень важные данные, так как они могут в любой момент, исчезнуть. Вот и всё. надеюсь кому нибудь поможет :)

среда, 28 марта 2012 г.

Музыка в Asterisk

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

#!/bin/bash
for i in *.mp3
do
BASEFILE=$(basename $i .mp3)
echo Converting $BASEFILE
mpg123 -s --rate 44100 --mono $BASEFILE.mp3 > $BASEFILE.raw
sox -r 44100 -w -s -c 1 $BASEFILE.raw -r 8000 -c 1 $BASEFILE.wav
sox $BASEFILE.wav -t gsm -r 8000 -b -c 1 $BASEFILE.gsm
sox $BASEFILE.wav -t ul -r 8000 -b -c 1 $BASEFILE.pcm
rm -f $BASEFILE.raw
done 


или

for f in `ls *.mp3` ; 
do 
FILE=$(basename $f .mp3) ; 
ffmpeg -i $FILE.mp3 -ar 8000 -ac 1 -ab 64 $FILE.wav -ar 8000 -ac 1 -ab 64 -f mulaw $FILE.pcm -map 0:0 -map 0:0 ; 
done