November 22, 2010

dpkg: error processing keyboard-configuration.templates

Hi.
When installing xorg package in Debian GNU Linux you may have an error:
dpkg: error processing keyboard-configuration.templates ....
 So, to resolve this problem and install xorg package you have edit file "/var/lib/dpkg/info/keyboard-configuration.templates". Remove all blocks contains

June 29, 2010

Настройка GPRS/EDGE в разблокированном iPhone 3G, iOS 4.0

Привет.
И так, после jailbreak и unlock iPhone, который работает на iOS 4.0 есть большая вероятность того, что в меню настроек Вы не сможете найти настройки мобильного интернета.
Некоторые пишут, что нужно чем-то там сделать jailbreak и все будет работать. Зачем все время перепрошиваться?

JailBreak + Unlock iPhone 3G 8Gb

Всем привет. Я долго мучался, пока не нашел наиболее подходящее решение для разблокировки iPhone 3G. Все программы, использование которых мы можем увидеть на youtube или еще где-то, оказались совершенно бесполезными для меня, а именно ziPhone, blackra1n и т.п. То есть те, где все происходит по нажатию одной кнопки.
Изначально у меня был телефон с прошивкой 3.1.3, но после некоторых действий он у меня перестал выходить из Recovery Mode. То есть кроме USB шнурка с логотипом iTunes на экране ничего не было. Единственное, что помогло вывести телефон из такого состояния - это перепрошивка на более новую версию ОС, а именно 4.0.
Так вот, о моем телефоне. Это iPhone 3G 8 Gb, на котором установлена iOS 4.0 с версией модема 05.13.04.

June 14, 2010

aptitude через proxy в Debian

Данную статью пишу для того, чтобы в дальнейшем не забыть, "как это делается".
Установил Debian 5 на виртуальную машину VMWare 7.1(base system без графической оболочки)
На основной ОС(Windows 7 x64) есть доступ к интернету через Proxy
Теперь нужно поставить KDE4, но без интернета это сделать не получится, так как на дисках у меня такого добра нет.

August 22, 2009

[QT] Изменение размера виджета в зависимости от размера окна

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

protected:
void resizeEvent( QResizeEvent *__e );

August 4, 2009

[Qt]Вывод в консоль в Qt проекте в среде MSVS

Так как обычные *.pro файлы не работают в MSVC, точнее, интегратор Qt для MSVS не генерирует из *.pro файла Makefile'ы, то может возникнуть проблема в том, что нужно вывести дебаг информацию в консоль, а консоль-то не работает... Есть 2 способа решения данной проблемы:
1. Создать Qt Console Application:

August 3, 2009

MSVS + Qt 4.5-Windows CE

Как скомпилировать Qt 4.5.x для создания приложений под Windows CE(я компилил под Windows Mobile 6).
Качаем Windows Mobile 6 Standard SDK или Windows Mobile 6 Professional SDK. Устанавливаем. Далее создаем батник(пути и версии свои):

August 2, 2009

MSVS + Qt 4.5

Неоднократно видел вопросы на форумах, как собрать Qt для использования в MS Visual Studio. Изначально, на сайте qtsoftware.com можно скачать библиотеку, ориентированную на использование с компилятором gcc для Windows(MinGW). Для того, чтобы можно было собирать проекты с использованием данной библиотеки компилятором MS необходимо пересобрать Qt.
И так, качаем Qt. Устанавливаем. Далее создаем батник с таким содержанием:

June 20, 2009

ZTE AC8700 + Debian GNU/Linux

Как подключиться к интернету, если Вы в парке на лавочке, у Вас есть ноутбук c Debian 5.0 и модем zte ac8700? У меня провайдер PeopleNet, потому некоторые моменты будут с ним связанны.
Для начала заставляем Debian понимать то, что в usb мы воткнули модем.
выполняем команду:
#>modprobe usbserial vendor=0x19d2 product=0xfffe

Далее вставляем модем в usb и ждем, пока его индикатор не начнет мигать зеленым цветом.
Замигал зеленым.
выполняем команду
#>dmesg | tail

March 13, 2009

[Qt]Импорт проекта в Eclipse IDE

Если Вы хотите импортировать Qt-шный проект в рабочее пространство Eclipse IDE и у Вас не получается это сделать посредством интегратора Qt для Eclipse через *.pro файл, рекомендую обратиться к стандартным средствам Eclipse:
File -> Import... -> General -> Existing Project into Workspace
затем жмем Next и выбираем директорию или архив с проектом. Завершаем операцию импорта и Ваш проект уже находится в Workspace Eclipse.

March 6, 2009

[Qt4] Работа с БД

Написал небольшой класс для работы с бд посредством Qt.
Использовать класс нужно так:
тут пишем свою строку коннекта:
--------------------------------------------------------------------------------------------
this->dbo.setDatabaseName( "CONNECTION STRING" );
--------------------------------------------------------------------------------------------

Потом так:
--------------------------------------------------------------------------------------------

1 RDatabase dbs;
2 dbs.init( "my_connection" );
3 if ( dbs.connect() ){
4 dbs.exec( "SELECT id, name FROM table" );
5 for ( int i = 0; i < dbs.count(); i++ ){
6 /*второй параметр 1 для перемещения курсора*/
7 id = dbs.value( 0, 1 );
8 name = dbs.value( 1 );
9 }
10 dbs.disconnect();
11 }


--------------------------------------------------------------------------------------------

Код класса

RDatabase.h
--------------------------------------------------------------------------------------------

19
20 #ifndef RDATABASE_H_
21 #define RDATABASE_H_
22
23 #include <QtSql/QSqlDatabase>
24 #include <QtSql/QSqlQuery>
25 #include <QtSql/QSqlResult>
26 #include <QtSql/QSqlError>
27
28 class RDatabase {
29
30 public:
31 RDatabase();
32 virtual ~RDatabase();
33
34 public:
35 void init( const QString &name );
36 bool connect();
37 bool connected() const;
38 bool reconnect();
39 void disconnect();
40 bool exec( const QString &query );
41 const QString value( int i, int r = 0 );
42 int count();
43 const QString getLastError();
44
45 private:
46 QSqlDatabase dbo;
47 QSqlQuery dbq;
48 bool initialized;
49
50 };
51
52 #endif /* RDATABASE_H_ */

--------------------------------------------------------------------------------------------
RDatabase.cpp
--------------------------------------------------------------------------------------------

19
20 #include "RDatabase.h"
21
22 RDatabase::RDatabase(){
23 this->initialized = false;
24 }
25
26 RDatabase::~RDatabase(){
27
28 }
29
30 /*
31 * Public members
32 */
33 void RDatabase::init(const QString &name){
34 if ( !this->initialized ){
35 this->dbo = QSqlDatabase::addDatabase( "QODBC", name );
36 /*
37 this->dbo.setDatabaseName( "DRIVER={MySQL ODBC 3.51 Driver};"
38 "Server=localhost;Port=3306;"
39 "Option=16384;Stmt=;Database=test;"
40 "Uid=root;Pwd=password" );
41 */
42 this->dbo.setDatabaseName( "CONNECTION STRING" );
45 }
46 this->initialized = true;
47 }
48 bool RDatabase::connect(){
49 return this->dbo.open();
50 }
51 bool RDatabase::connected() const{
52 return this->dbo.isOpen();
53 }
54 bool RDatabase::reconnect(){
55 this->dbo = QSqlDatabase::database( this->dbo.connectionName(), true );
56 return this->dbo.open();
57 }
58 void RDatabase::disconnect(){
59 this->dbo.close();
60 }
61 bool RDatabase::exec(const QString &query){
62 this->dbq = this->dbo.exec( query );
63 return this->dbq.isActive();
64 }
65 const QString RDatabase::value(int i, int r){
66 if ( r != 0 ) this->dbq.next();
67 return this->dbq.value( i ).toString();
68 }
69 int RDatabase::count(){
70 return this->dbq.numRowsAffected();
71 }
72 const QString RDatabase::getLastError(){
73 return this->dbo.lastError().text();
74 }

--------------------------------------------------------------------------------------------

February 26, 2009

[C/C++] Указатель на функцию

С функцией мы можем сделать две вещи:
-вызвать ее;
-получить ее адрес;
Если мы получим адрес функции и присвоим его какому-то указателю, то в дальнейшем сможем использовать этот адрес для вызова функции.
--------------------------------------------------------------------------------------------
/* функция, которая ничего не возвращает */
void function(){ printf( "Hello wrold" ); } /* обьявление функции */
void ( *pointer )( void ); /* обьявление указателя */

int main( int argc, char *argv[] ){
pointer = &function; /* берем адрес функции */
pointer(); /* вызов функции function() через ее адрес */
return 0;
}

/* функция, которая что-то возвращает */
char* function(){ /* обьявление функции */
static char *str = "HelloWorld";
return str;
}

char*( *pointer )( void ); /* обьявление указателя */

int main( int argc, char *argv[] ){
pointer = &function; /* берем адрес функции */
printf( "%s\n", pointer() ); /* вызов функции function() через ее адрес */
return 0;
}

/* функция, которая что-то принимает в качестве аргумента */
void function(const char *_s){ /* обьявление функции */
printf( "%s\n", _s );
}

void ( *pointer )( const char *); /* обьявление указателя */

int main( int argc, char *argv[] ){
pointer = &function; /* берем адрес функции */
pointer( "Hello world" ); /* вызов функции function() через ее адрес */
return 0;
}

--------------------------------------------------------------------------------------------

[C/C++] Получить имя пользователя в Windows

Ниже предоставленна небольшая функция, которая помогает определить имя пользователя в системе Windows:
--------------------------------------------------------------------------------------------
/* init */
char* winUserName(){
static char name[256];
unsigned long size = sizeof( name );
GetUserName( name, &size ); /* from windows.h */
return name;
}
/* using */
int main(int argc, char *argv[]){
printf( "%s\n", ::winUserName() ); /* from stdio.h*/
return 0;
}

--------------------------------------------------------------------------------------------

February 25, 2009

Уникальная установка .Net Framework 3.5 SP1

На Windows XP SP3 устанавливал .Net Framework 3.5 SP1
Пронаблюдал очень интересную картину:

December 4, 2008

Nokia6630 + Debian Linux

Использование Nokia 6630 в качестве модема на Debian Linux
Создаем три файла:
/etc/ppp/3g
# Most GPRS phones don't reply to LCP echo's
lcp-echo-failure 0
lcp-echo-interval 0
# Keep pppd attached to the terminal:
# Comment this to get daemon mode pppd
nodetach
# Debug info from pppd:
# Comment this off, if you don't need more info
debug
# Show password in debug messages
show-password
# Connect script:
# scripts to initialize the GPRS modem and start the connection,
connect /etc/ppp/3g-connect-chat
# Disconnect script:
# AT commands used to 'hangup' the GPRS connection.
disconnect /etc/ppp/3g-disconnect-chat
# Serial device to which the GPRS phone is connected:
/dev/ttyACM0 # Data cable device file
# Serial port line speed
115200 # fast enough
#57600
# Hardware flow control:
# Use hardware flow control with cable, Bluetooth and USB but not with IrDA.
crtscts # serial cable, Bluetooth and USB, on some occations with IrDA too
#nocrtscts # IrDA
# Ignore carrier detect signal from the modem:
local
# IP addresses:
# - accept peers idea of our local address and set address peer as 10.0.0.1
# (any address would do, since IPCP gives 0.0.0.0 to it)
# - if you use the 10. network at home or something and pppd rejects it,
# change the address to something else
0.0.0.0:0.0.0.0
# pppd must not propose any IP address to the peer!
noipdefault
# Accept peers idea of our local address
ipcp-accept-local
# Add the ppp interface as default route to the IP routing table
defaultroute
# DNS servers from the phone:
# some phones support this, some don't.
usepeerdns
# ppp compression:
# ppp compression may be used between the phone and the pppd, but the
# serial connection is usually not the bottleneck in GPRS, so the
# compression is useless (and with some phones need to disabled before
# the LCP negotiations succeed).
novj
nobsdcomp
novjccomp
nopcomp
noaccomp
noccp
# The phone is not required to authenticate:
noauth
# Username and password:
# If username and password are required by the APN, put here the username
# and put the username-password combination to the secrets file:
# /etc/ppp/pap-secrets for PAP and /etc/ppp/chap-secrets for CHAP
# authentication. See pppd man pages for details.
user "none"
password 123456
#
mtu 1500
mru 1500
asyncmap 0xa0000

/etc/ppp/3g-connect-chat
#!/bin/sh
exec chat \
TIMEOUT 5 \
ECHO ON \
ABORT '\nBUSY\r' \
ABORT '\nERROR\r' \
ABORT '\nNO ANSWER\r' \
ABORT '\nNO CARRIER\r' \
ABORT '\nNO DIALTONE\r' \
ABORT '\nRINGING\r\n\r\nRINGING\r' \
'' AT \
OK ATH \
OK ATE1 \
OK 'AT+CGDCONT=1,"IP","internet.saunalahti","0.0.0.0",0,0' \
OK ATD*99# \
TIMEOUT 22 \
CONNECT ""

/etc/ppp/3g-disconnect-chat
#!/bin/sh
exec /usr/sbin/chat -V -s -S \
ABORT "BUSY" \
ABORT "ERROR" \
ABORT "NO DIALTONE" \
SAY "\nSending break to the modem\n" \
"" "K" "" "K" "" "K" "" \
"+++ATH" "" "+++ATH" "" "+++ATH"

В файле /etc/ppp/peers/3g меняем пути:
connect /etc/ppp/3g-connect-chat меняем на connect /etc/ppp/peers/3g-connect-chat
disconnect /etc/ppp/peers/3g-disconnect-chat меняем на disconnect /etc/ppp/peers/3g-disconnect-chat
Затем в файлах /etc/ppp/peers/3g и /etc/ppp/peers/3g-connect-chat нужно указать параметры своего оператора:
в строке user "none" пишем вместо none имя пользователя для своего оператора
в строке password 123456 пишем вместо 123456 пароль для своего оператора
В файле /etc/ppp/peers/3g-connect-chat
в строке
OK 'AT+CGDCONT=1,"IP","internet.saunalahti","0.0.0.0",0,0' \ вместо internet.saunalahti пишем точку доступа(APN) для своего оператора.
Сохраняем файлы.
Затем выполняем команду
# pppd call 3g
и сидим в интернете.

[Qt] Activating & flashing(in the task bar) window

Как сделать так, чтобы окно разворачивалось или мигало, если оно свернуто в панель задач?

Для мигания в панели задач(если свернуто, иначе просто станет активным) в классе QWidget есть такой метод:

void activateWindow();

Для разворачивания окна, если оно свернуто так же в классе QWidget есть методы:

void showMinimized();
void showMaximized();
void showFullScreen();
void showNormal();

Макросы из MS Word 2003 в MS Word 2007

Как испльзовать макросы из Word 2003 в Word 2007?
Если у Вас утстановлен в данный момент MS Word 2003, то идем в директорию %APPDATA%\Microsoft\Шаблоны\. Находим там файлик Normal.dot. Если Word 2003 не установлен, то у Вас должен быть файл Normal.dot
Открываем полученный файл в Word 2007. Word ругнется на содержимое. Жмем "Параметры" и включаем макросы. Затем нажимаем Alt + F8. Откроется окно с макросами. Справа нажимаем "Организатор". Далее в левом поле "Макросы и документы" выбираем Normal.dot(Шаблон). В правом поле "Макросы и документы" выбираем Normal.dotm(общий шаблон) и нажимаем кнопку "Копировать ->".
Теперь в любом документе *.docx мы можем использовать свои макросы.