суббота, 30 марта 2013 г.

Построение программы на Qt из консоли

Для того, чтобы лучше «прочувствовать» процесс создания приложения на Qt необходимо создать приложение из консоли, не используя никакую среду разработки. Также желательно использовать ОС семейства Linux.

Запускаем терминал, переходим в папку с проектом на Qt и создаём на основе файла проекта, зависимый от платформы файл makefile:

qmake project_name.pro

Далее выполняем команду make для построения программы:

make

Ну а теперь можно выполнить программу:

$ ./project_name

make: предупреждение: «Неправильный ход часов. Сборка может быть неполной»

При построении программы на Qt, могут появляться предупреждения вида:

make: Warning: File `Makefile' has modification time 62 s in the future

либо:

make: предупреждение: «Неправильный ход часов. Сборка может быть неполной»

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

Расстояние между абзацами в LaTeX

Чтобы задать необходимое расстояние между абзацами, необходимо использовать команду \parskip. Пример использования показан ниже.

\setlength{\parskip}{0.5cm}

Как подключить стилевой файл в LaTeX?

Для подключения файла со стилями с именем file_name.sty, который находится в одной папке с основным файлом tex, необходимо в шапке написать:

\usepackage{file_name}

понедельник, 25 марта 2013 г.

Как контролу ToolStrip уменьшить ширину?

Чтобы элементу управления ToolStrip задать произвольную ширину, необходимо установить свойству Dock значение None. А затем уже как обычно задать ширину.

воскресенье, 24 марта 2013 г.

Надписи на русском языке в Qt

Первый проект на Qt, как водится «Hello, World». Всё по книге, запускается и работает. Но стоит написать фразу русскими буквами, как появляются крякозябры. Ну вот какого хрена... И кодировка стоит UTF-8, но всё равно. Для решения проблемы нужно сделать следующее:

Подключить QTextCodec:

#include <QTextCodec>

и добавить 3 волшебных строчки в начало функции main:

QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));

Установка в Qt Creator кодировки по умолчанию

Не знаю почему, но в 21-м веке проблема с кодировками ещё не решена...

После создания проекта Qt необходимо настроить кодировку файлов проекта. Непонятно по какой причине, по умолчанию установлена кодировка System. Меняем её на UTF-8. Для этого в левом верхнем меню выбираем:

Проекты — Настройки редактора — Кодировка файла по умолчанию — UTF-8

После этого лучше сохраниться и перезагрузить проект.

Чем просматривать DjVu документы в Debian?

djview4 — отличный просмотровщик документов в формате DjVu. Для установки выполняем:

# aptitude install djview4

Как обновить Debian до новой версии?

Для обновления дистрибутива Debian до последней стабильной версии, необходимо последовательно выполнить команды:

# aptitude update
# aptitude dist-upgrade

Как узнать версию дистрибутива Debian?

Команда:

$ lsb_release -a

Выводит на экран информацию, содержащую номер релиза и его кодовое имя. Пример:

No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 6.0.6 (squeeze)
Release: 6.0.6
Codename: squeeze

Как узнать размер свободного места на дисках в Линуксе?

Команда df -h выводит на экран отчёт об использовании дискового пространства. Ключ -h нужен для представления размера в более понятной, человеческой форме.

суббота, 23 марта 2013 г.

Поставщик "Microsoft.Jet.OLEDB.4.0" не зарегистрирован на локальном компьютере

Есть компьютер с 64-битной виндой. В свойствах проекта Visual Studio установлена конечная платформа x64. Необходимо подключиться к базе данных Access. Открытие подключения показано ниже:

OleDbConnection cn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path_to_db);
      
cn.Open();

где path_to_db — путь к файлу с базой данных Access.

При попытке открытия подключения возникает ошибка:

Поставщик "Microsoft.Jet.OLEDB.4.0" не зарегистрирован на локальном компьютере

Поискав в Интернете, нашел только следующее решение проблемы — в свойствах проекта установить конечную платформу x86:

Проект -> Свойства -> Построение -> Конечная платформа -> x86

Вообще, Access не лучший выбор для используемой СУБД. Лучше перейти на использование бесплатной SQLite.

четверг, 21 марта 2013 г.

Как склеить два столбца в селекте

Бывает необходимо в запросе объединить значения нескольких колонок таблицы. Как это сделать, подробно показано ниже:

select FIELD_NAME1 || ' -- ' || FIELD_NAME2 AS NAME FROM TABLE_NAME;

где FIELD_NAME1 — имя первого столбца, FIELD_NAME2 — имя второго столбца, NAME — имя объединенного столбца, TABLE_NAME — имя таблицы, || — операция склейки, ' -- ' — значение-разделитель между значениями столбцов, может быть произвольным.

суббота, 16 марта 2013 г.

Как получить список полей заданной таблицы в Oracle?

Для получения списка полей таблицы, необходимо выполнить запрос:

select column_name from user_tab_columns where table_name = 'TABLE_NAME';

где TABLE_NAME — имя заданной таблицы.

воскресенье, 10 марта 2013 г.

Определение словарного запаса

Для определения своего словарного запаса, можно абсолютно бесплатно воспользоваться сайтом: http://my.vocabularysize.com. Вначале регистрируемся и выбираем в настройках русский язык. Это не займет много времени.

Далее необходимо пройти тест, который состоит из 140 вопросов. В вопросе дается английское слово, фраза, которая его содержит и 4 варианта ответа на русском языке, а также вариант «не знаю». Если вы не знаете ответа, то лучше не гадать варианты, а выбрать вариант «не знаю» для более точного подсчёта словарного запаса.

После прохождения теста вам зададут несколько вопросов, после чего вам будет выдано общее количество слов, которое вы знаете. Мой словарный запас оказался равным 5500, что конечно же не так много, для нормального чтения книг на английском нужно знать примерно 9000 слов.

Также отмечу сайт http://www.wordfrequency.info/. Там можно добыть 5000 наиболее часто встречающихся английских слов.

четверг, 7 марта 2013 г.

AutoSizeRowsMode и адские тормоза

Время отрисовки грида зависит кроме всего прочего, еще и от того, как определяется высота строк.

В варианте ниже жуткие тормоза из-за того, что идёт расчёт высоты всех строк. Если строк много, то этот расчёт может оказаться долгим.

grid.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;

Более быстрый и правильный вариант — определять высоту только тех ячеек, которые в данный момент отображаются на гриде. Совсем всё будет быстро, если использовать виртуальный грид, но об этом я напишу как-нибудь попозже.

grid.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCells;

Грамотная структура каталогов проекта

При создании нового проекта важно следить за порядком в папке с проектом и не допускать «свалки» в ней.

Рекомендуется создавать следующие папки:

  • bin — хранение исполняемых файлов, dll;
  • data — всё, что относится к созданию и модификации базы данных;
  • docs — сюда помещаем технические задания, акты, и прочие документы;
  • res — иконки, логотипы;
  • src — хранение исходников.

среда, 6 марта 2013 г.

Запуск программы от другого пользователя в домене

Если злобный администратор домена отключил строку «Запуск от имени», при щелчке по ярлыку при нажатом Shift'е, можно воспользоваться командой runas. Пример запуска программы Total Commander от другого пользователя:

>runas /user:user_name@domen_name "C:\Program Files\totalcmd\TOTALCMD.EXE"

где user_name — имя пользователя в домене, domen_name — имя домена.

Обновление политик в домене

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

gpupdate /force

после чего необходимо перезагрузиться.

воскресенье, 3 марта 2013 г.

Смена пароля пользователю mysql

Иногда бывает необходимо изменить пароль пользователю mysql. Для этого необходимо выполнить от root:

SET PASSWORD FOR 'user_name'@'localhost' = PASSWORD('new_password');

где user_name — пользователь mysql, new_password — новый пароль.