Thursday, March 3, 2011

QtService


Создавая службу на основе QtService версии 2.6.1, при компоновке происходили ошибки следующего вида:

error LNK2019: unresolved external symbol "public: __thiscall QtServiceBase::QtServiceBase(int,char * *,class QString const &)" (??0QtServiceBase@@QAE@HPAPADABVQString@@@Z) referenced in function "public: __thiscall QtService::QtService(int,char * *,class QString const &)" (??0?$QtService@VQCoreApplication@@@@QAE@HPAPADABVQString@@@Z)

error LNK2019: unresolved external symbol "public: virtual __thiscall QtServiceBase::~QtServiceBase(void)" (??1QtServiceBase@@UAE@XZ) referenced in function "public: virtual __thiscall QtService::~QtService(void)" (??1?$QtService@VQCoreApplication@@@@UAE@XZ)

Для того чтобы правильно собрать модуль
нужно сделать следующее:
Взять файл examples.pro, в папке examples предварительно создав папку с названием проекта, изменить его следующим образом:

Присвоить ему имя необходимого solution:
solution_name.pro

А содержимое этого файла должно иметь следующий вид:

TEMPLATE = subdirs
SUBDIRS = project_name\

Где SUBDIRS обозначает имя проекта, который будет создан в solution.

В папке project_name\ должны быть файлы:

project_name.pro
project_name.qdoc
и как минимум файл main.cpp

В файле project_name.pro

TARGET = ProjectName
TEMPLATE = app
CONFIG += console qt
QT = core network 

QT указывает какие Qt библиотеки будут использоваться в проекте:


SOURCES = main.cpp
include(../../src/qtservice.pri)

Затем необходимо открыть файл solution_name.pro в студии:




Открыв файл должно появиться следующее окно:



По окончании данного процесса будет сгенерирован солюшн с проектом.

Monday, February 28, 2011

Some MS stuff


Бита присланная, в ознаменование запуска Visual Studio 2010:
Решай свои проблемы эффективно.
Очень мотивирует.


Китайский диск Visual Studio 2010 — это просто праздник какой-то. Чего здесь только нет. :-))


Wednesday, February 23, 2011

Parable of the comments

Однажды в стране исходных кодов Великий решил ввести налог на исходный код, сказав:
“Каждый должен будет отдать 20 % своего исходного кода“.
А не компилируемый исходный код – равносилен смерти.
Сразу же нашелся хитрый и умный программист, который пришел к царю и заявил ему:
“Давай заключим пари! Если я прямо сейчас отдам тебе 20 % своего кода, и после этого оставшийся код скомпилируется без единой ошибки, то ты отменишь налог”.
Умный программист знал, что может с легкостью отдать ему те строки кода, которые содержат комментарии. А комментировал он свой код тщательно.
Великий, восхитившись смелостью программиста воскликнул: “Хорошо! Я принимаю твоё пари, но при одном условии: отданные мне строки кода не могут быть пустыми!”.
Отдав 20 % исходного кода с комментариями, программист выиграл пари.
Таким образом, программист проучил Великого, показав остальным, насколько полезны бывают комментарии.

Saturday, January 8, 2011

Game of Life

Игра "Жизнь" (англ. Game of Life, или просто Life) — это клеточный автомат, придуманный английским математиком Джоном Конвеем (John Horton Conway) в 1970 году.
В качестве игрового поля выступает вселенная. Каждая клетка поля может быть живой или мёртвой. Клетка имеет восемь соседей. Распределение живых клеток в начале игры называется первым поколением. Каждое следующее поколение рассчитывается на основе предыдущего по таким правилам:
- мёртвая клетка, рядом с которой ровно три живые клетки, оживает;
- если у живой клетки есть две или три живые соседки, то эта клетка продолжает жить; если же соседей меньше двух или больше трёх, то клетка умирает.
Игрок не принимает прямого участия в игре, а лишь расставляет начальную конфигурацию «живых» клеток, которые затем взаимодействуют согласно правилам уже без его участия.
В процессе игры могут получаться очень замысловатые и красивые комбинации.



В конце игры выживают устойчивые (которые остаются неизменными) и периодические (у которых состояние повторяется через некоторое число поколений) фигуры.

Friday, January 7, 2011

Quine

Квайн или куайн — это компьютерная программа, выдающая на выходе точную копию своего исходного текста.
Название происходит от имени американского логика, математика и философа Уилларда Ван Ормана Куайна (англ. Willard Van Orman Quine) (1908—2000), который занимался углубленным изучением косвенного самоупоминания.
Программа не считается куайном, если используется чтение кода программы из файла, ввод его с клавиатуры и т. д. Также программа не считается куайном, если не содержит вообще никакого кода.

Приведу свой вариант реализации куайна.

#include <stdio.h> 
void main() { puts("#include <stdio.h>"); char *qstr = "void main() { puts(\"#include <stdio.h>\"); char *qstr = \"%s\"; printf(qstr, qstr); }"; printf(qstr, qstr); }

Thursday, January 6, 2011

Цвет текста и фона в консоли

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

#include <stdio.h>
#include <windows.h>

void SetColor(DWORD color)
{
  HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
  SetConsoleTextAttribute(hConsole, color);
}

void main()
{
  SetColor(FOREGROUND_RED | FOREGROUND_INTENSITY);
  printf("Red\n");
  SetColor(FOREGROUND_GREEN | FOREGROUND_INTENSITY);
  printf("Green\n");
  SetColor(FOREGROUND_BLUE | FOREGROUND_INTENSITY);
  printf("Blue\n");

  SetColor(BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE | BACKGROUND_INTENSITY);
  printf("White\n");

  SetColor(0x0F);
  printf("\n");
}

* This source code was highlighted with Source Code Highlighter.
Это даст следующий эффект:


Видно, что белый цвет получается путем смешивания красного, зеленого и синего цветов.
В коде, можно также задать цвет, передав его в числовом формате.
Командная строка по команде color\? подсказывает возможные доступные цвета:

0 = Черный  8 = Серый
1 = Синий   9 = Светло-синий
2 = Зеленый A = Светло-зеленый
3 = Голубой B = Светло-голубой
4 = Красный C = Светло-красный
5 = Лиловый D = Светло-лиловый
6 = Желтый  E = Светло-желтый
7 = Белый   F = Ярко-белый

Можно задавать цвет фона и текста в шестнадцатеричном формате, для этого используется две цифры. Первая цифра определяет цвет фона, а вторая - цвет текста.

Sunday, November 21, 2010

Trees builder

Hello world!
Suddenly I’ve decided to make the simple trees builder.
No sooner said than done.

You can see result in the image below.


Every time the algorithm generates a new tree.
After some variations variables, I found the results' similarity with the real species of trees.

[Show / hide source code]
//------------------------------------------------------------------------------
// Build a new tree
//------------------------------------------------------------------------------
void BuildTree(Point startPoint, Point endPoint, int k)
{
    Random rnd = new Random((int)DateTime.Now.Ticks);
    Pen pen = new Pen(Color.Black, k);

    if (hasLeaves)
    {
        // set the color to rnd green and width = 5 for last branch as for a leaf
        if (k < 1) pen = new Pen(Color.FromArgb(0, rnd.Next(80, 160), 0), 5);
    }

    m_Graphics.DrawLine(pen, startPoint, endPoint);

    if (k > 0)
    {
        Point pNext = new Point();
     
        // add branch to the right
        pNext = new Point(endPoint.X + rnd.Next(0, spread), endPoint.Y - rnd.Next(0, speed));
        BuildTree(endPoint, pNext, k - 1);
     
        // add branch to the left
        pNext = new Point(endPoint.X - rnd.Next(0, spread), endPoint.Y - rnd.Next(0, speed));
        BuildTree(endPoint, pNext, k - 1);

        Application.DoEvents();
    }
}

* This source code was highlighted with Source Code Highlighter.