пятница, 12 декабря 2014 г.

BSOD Win7 *** STOP: 0x000000C4 (0x0000000000000000,0x0000000000000000,0x0000000000000000,0x0000000000000000)

BSOD Win7 

*** STOP: 0x000000C4 (0x0000000000000000,0x0000000000000000,0x0000000000000000,0x0000000000000000)

 При загрузке системы, я получал BSOD с кодом ошибки 0xC4;
Скопировав аварийный dump памяти, на свою рабочую машину я провел анализ., дампа.
0: kd> !analyze -v
DRIVER_VERIFIER_DETECTED_VIOLATION (c4)
A device driver attempting to corrupt the system has been caught.  This is
because the driver was specified in the registry as being suspect (by the
administrator) and the kernel has enabled substantial checking of this driver.
If the driver attempts to corrupt the system, bugchecks 0xC4, 0xC1 and 0xA will
be among the most commonly seen crashes.
Arguments:
Arg1: 00000000, caller is trying to allocate zero bytes
Arg2: 00000000, current IRQL
Arg3: 00000000, pool type
Arg4: 00000000, number of bytes




Проблема заключалась в драйвере tcpipreg.sys, данной информации хватило с лихой, чтобы
попробовать восстановить работу системы. И так что требуется сделать?

Решение:


  1. Загрузите машину в режиме безопасной загрузки.
  2. Запустите verifier.exe
  3. Выберите опцию удаления существующих параметров.
  4. Перезагрузите Машину.




Либо вы можете сделать следующее:

  1. Загрузите машину в режиме безопасной загрузки.
  2. Запустите regedt32.exe
  3. Посмотрите что находится у вас по этому пути
  4. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces\<your-adapter-interface>

Если значения ключей пустые удалите ключ.

Значение Ключа:
Name: IPAddress
Type: REG_MULTI_SZ
Data:

ПРИМЕЧАНИЕ: Если значение данных (Data) не равны нулю, то это не причина этой ошибки BSOD'a! Не удаляйте этот ключ!
Если IPAddress не показывает никакого значения данных,
то удалите запись IPAddress и перезагрузите машину.

четверг, 27 ноября 2014 г.

Включение учетной записи sa(root) MSSQL сервер

Включение учетной записи sa(root) MSSQL сервер


Ошибки:
Cannot alter the login 'sa', because it does not exist or you do not have permission.

Решение:
На работе возникли проблемы с MS Sql Server'ом, проблемы бала в том что учетная запись sa(root) отключена, проблема заключалась в том, что чтобы включить учетную запись sa(root), текущая учетная запись должна обладать правами/доступом не ниже sa. У меня MSSQL сервер находился в домене и при выполнение скрипта.
/* Отключить *
/ALTER LOGIN [sa] DISABLE
GO

/* Включить */
ALTER LOGIN [sa] ENABLE
GO


Если вы обладаете правами администратора и не хотите вручную включать учетную запись, то можете выполнить этот скрипт:

ALTER LOGIN sa ENABLE ;
GO
ALTER LOGIN sa WITH PASSWORD = 'ПарольНаУчетнуюЗапись';
GO

Выдавалась ошибка см.сверху.

Решил проблему так, как известно в MSSQL есть два типа соединений для входа, я выбрал SQL Server Authenfication. Далее нашел учетную запись и включил ее;





Программа для создания спрайтов.

   Достаточно трудно найти в сети, достойную программу для создания спрайтов. Покопавшись в google часа два нашел толковую программу.

Texturepacker - программа для создания спрайтов анимации, программа поддерживает большое количество экспортных форматов файлов. С помощью нее можно создавать спрайты для разных видео движков. Полный список поддерживаемых движков можно посмотреть на сайте производителя. Для себя отмечу что программа доступна в бесплатном режиме, создания спрайтов с данным типом лицензии доступно для экспорта в формате *.png, что мне собственно и нужно было.

Экспорт

Возможен экспорт для множества различных игровых и не очень движков.
Например, cocos2d, corona, libGDX, Shiva3D, Unity3D.
Форматы текстур получаемых на выходе - png, jpg, bmp, tga, tiff, pvr, а также pvr.gz и pvr.ccz. Не хватает, наверное, только DDS.

P.S Программа действительно полезная для тех кто ценит быстроту.

воскресенье, 16 ноября 2014 г.

uafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) already defined in LIBCMT.lib(new.obj)

Решение проблемы линкера, при выводе ошибок, переопределения операций:

Проблема:


  1. uafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) already defined in LIBCMT.lib(new.obj)
  2. uafxcw.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) already defined in LIBCMT.lib(delete.obj)
  3. uafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new[](unsigned int)" (??_U@YAPAXI@Z) already defined in libcpmt.lib(newaop.obj)
  4. uafxcw.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete[](void *)" (??_V@YAXPAX@Z) already defined in LIBCMT.lib(delete2.obj)
Решение:



Добавьте ключик при сборке:
 /FORCE:MULTIPLE

понедельник, 10 ноября 2014 г.

Простой Класс для работы с Excell в QT.

Простой Класс для работы с Excell в QT.



Была задача использовать Excell в QT, Нашел в сети исходники и переписал под свои нужды, данный класс сохраняет значения в ячейки, без возможности чтения из них.

Для использования в QT при динамической сборке следует определить
#define _AFXDLL, при статической сборке закомментировать #define _AFXDLL.


Так-же в настройках .pro следует указать.




LIBS += ole32.lib
        oleaut32.lib
        strmiids.lib

INCLUDEPATH += "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include" \
                "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include"


* Собирать только компилятором от MS.

Пример использования класса:

m_xsl = new CMSExcel

if(m_xsl->OpenExcelBook(CA2CT("SomeExcellFile.xlsx"), false) == S_OK)
{
     m_xsl->SetExcelValue(CA2CT("C4"), CA2CT("SomeValue"), true, 0);
}

m_xsl->Close();


#define _AFXDLL
#ifndef OLEXLS_H__
#define OLEXLS_H__
#include <afxdisp.h>
#include <vector>
#include <ole2.h>
 

HRESULT OLEMethod(int nType, VARIANT *pvResult, IDispatch *pDisp,LPOLESTR ptName, int cArgs...);

class CMSExcel
{

 HRESULT m_hr;
 IDispatch* m_pEApp;
 IDispatch*  m_pBooks;
 IDispatch* m_pActiveBook;

 private:
 HRESULT Initialize(bool bVisible = true);

 public:
 CMSExcel(void);
 //Destructor
       ~CMSExcel(void);

        HRESULT   SetVisible(bool bVisible);

        HRESULT   OpenExcelBook(LPCTSTR szFilename, bool bVisible);

        HRESULT   SetExcelValue(LPCTSTR szRange,LPCTSTR szValue,bool bAutoFit, int nAlignment);

        HRESULT Quit();
 

};


#endif

воскресенье, 9 ноября 2014 г.

Настраиваем браузер Google Chrome для работы через сеть tor

Настраиваем браузер Google Chrome для работы через сеть tor

Первое вам необходимо скачать пакет 

Vidalia Bridge

Если он уже загружен, Перейти в настройки (либо в адресной строке браузера набрать chrome://settings/) Google Chome ->Показать дополнительные настройки->Изменить настройки прокси сервера.





Везде нажать ОК, поздравляю ваш Браузер настроен для работы в сети TOR.


пятница, 7 ноября 2014 г.

При установке пакета MSOffice 2007 столкнулся с проблемой:
Ошибка 1920. Не удалось запустить службу "Служба кэша шрифтов Windows" (FontCache).Убедитесь, что у вас есть необходимые разрешения на запуск системных служб.


Решение:

 Пуск->Панель Управления->Администрирование->Службы; Найдите службу, и запустите ее в автоматическом режиме.(Служба кэша шрифтов Windows)




среда, 5 ноября 2014 г.

login failed for user nt authority\system

 Если возникла проблема с MSSQL Server 

Ошибка : login failed for user nt authority\system
 else ошибка сервиса при запуске : The request failed or the service did not respond in timely fashion. 


Решение :

 1 - убедитесь что учетная запись NT AUTHORITY\SYSTEM не доступна.
  * Для это следует выполнить команду в Management Studio
sp_grantlogin 'NT AUTHORITY\SYSTEM'
 2 - Просмотреть и убедиться что проблема действительно с учетной записью,
        откройте просмотр событий:
     Убедитесь что в просмотре событий есть сообщения от SQL SERVER'a:
 3 - Создайте пользователя nt authority\system с помощью Management Studio
установите нужные права.
 4 - Запустите сервис.
 ???
 5 - Profit!






вторник, 4 ноября 2014 г.

Установка первичного ключа (autoincrement) в MS SQLServer

Установка первичного ключа (autoincrement) в MS SQLServer
При создании базы данных иногда требуется, чтобы значение первичного ключа автоматически наращивалось на единицу.




Помни что при вызове Insert (id) указывать явно не нужно,

понедельник, 6 октября 2014 г.

Фильтруем сообщения в Qt

Простой пример по отчиске background'a, при потери фокуса у виджета.
Имеется виджет, при потере фокуса, background сабжа не перерисовывается.
Соб-но пример:
   Оригинал            
  
















При потере фокуса(background) должен отчиститься.

Так как-же отследить событие потери фокуса?..

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
private slots:
bool eventFilter(QObject *obj, QEvent *event); //Обработчик фильтра
};

//....
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{

    ui->setupUi(this);
    ui->treeWidget->installEventFilter(this); //Установим фильтр
}

//Код хука фильтра 
bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
    if(event->type() ==  QEvent::FocusOut) //нам нужно отследить событие потери фокуса
    {
        ui->treeWidget->clearSelection(); //Очистим background
        qDebug() << "Event!";
    }
}
Вот так можно фильтровать сообщения у определенных виджетов. Например события при вводе с клавиатуры, иногда требуется отследить именно событие и в зависимости от него произвести какое действие. 



суббота, 13 сентября 2014 г.

Статическая линковка QT при использовании Microsoft Visual Studio

Статическая сборка QT 5.3.1 для MSVC.

Для того чтобы успешно собрать статическую сборку, включая возможность работы с odbc следует выполнить следующее:
Скачать и установить 

  1. qt-vs-addin
  2. Microsoft DirectX SDK
  3. Microsoft Visual Studio 2010 SP1
  4. Патч  KB2280741-x86.exe для Microsoft Visual Studio помогающий решить проблему линкера с ключом /O2(Многопоточная сборка)
  5. Скачать веб установщик QT, выбрать нужные опции, и обязательно sourcecode для версии которую вы хотите собрать.
  6. Скачать QT Jom.
  7. Установить переменную среды:
  8. QMAKESPEC =  win32-msvc2010.
По сути вам необходимы из этого списка только то что отмечено жирным шрифтом. Однако рекомендую поставить все.

Уже все поставлено? Тогда поехали!
Откройте в блокноте config по следующему пути, C:\Qt\5.3\Src\qtbase\mkspecs\win32-msvc2010\qmake.conf и замените что у вас написано следующем:
QMAKE_CFLAGS_RELEASE    = -O2 -MT
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi
QMAKE_CFLAGS_DEBUG      = -Zi -MTd
Cохраните изменения.

Открываем
Visual Studio Command Promt (Пуск->Microsoft Visual Studo->Tools) Запускаете с правами администратора.
Набрать в окне терминала следующее :
>> cd C:\Qt\5.3\Src\qtbase

>> configure -static -debug-and-release -opensource -qt-sql-od
bc -qt-sql-sqlite -platform win32-msvc2010 -plugin-sql-odbc -nomake examples -no
make tests -opengl desktop -mp -audio-backend

Выберите нужную вам лицензию ( нажмите y).
Ждете две минуты пока configure, не завершит работу. Уже Завершил?

Вводите в окне терминала следующее :
C:\Qt\Jom\Jom.exe -j 200
(параметр - j) настраиваемый на моей системе (CORE I7 8GB DDR3 WINX64), выберите значение -j 50 если ваша система < моей по тех.характеристикам.
На моей системе сборка завершилась через 15- минут.

После того как все собралось,
Запускайте студию вкладка QT -> Options -> Add -> указываете путь до C:\Qt\5.3\Src\qtbase\-> Ок.
Открываете проект qt, далее выставляете release сборку, переходите на вкладку  C++ ->Code Generation -> Multi-threaded (/MT)
Если при компиляции линкер будет ругаться что операции new определены в uafxcw.lib, выполните следующее :


Ссылки по теме 
http://qt-project.org/forums/viewthread/34710
http://www.qtcentre.org/threads/54772-Qt-5-0-2-static-buliding-error
http://www.prog.org.ru/topic_20045_0.html
http://stackoverflow.com/questions/14932315/how-to-compile-qt-5-under-windows-or-linux-32-or-64-bit-static-or-dynamic-on-v
http://qt-project.org/doc/qt-4.8/configure-options.html