LINUX.ORG.RU

Сообщения YarikRock

 

Исправить поведение qml компонента

Имеется следующий код на qml, который должен при клике на квадрат делить его на 4 маленьких на его месте.

import QtQuick 2.0

Rectangle {
    Component {
        id: squareComponent
        Rectangle {
            property int sideLenght: 500
            width: sideLenght
            height: sideLenght
            color: "orange"
            MouseArea {
                anchors.fill: parent
                onClicked: {
                    var first = squareComponent.createObject(parent)
                    var second = squareComponent.createObject(parent)
                    var third = squareComponent.createObject(parent)
                    var fourth = squareComponent.createObject(parent)

                    var sideLenght = parent.sideLenght / 2

                    first.sideLenght = sideLenght
                    second.sideLenght = sideLenght
                    third.sideLenght = sideLenght
                    fourth.sideLenght = sideLenght

                    var x = parent.x
                    var y = parent.y
                    console.log(x, y)

                    first.x = x
                    first.y = y
                    first.color = "red"
                    console.log("first", first.x, first.y)

                    second.x = first.x + sideLenght
                    second.y = first.y
                    second.color = "orange"
                    console.log("second", second.x, second.y)

                    third.x = first.x
                    third.y = first.y + sideLenght
                    third.color = "blue"
                    console.log("third", third.x, third.y)

                    fourth.x = first.x + sideLenght
                    fourth.y = first.y + sideLenght
                    fourth.color = "black"
                    console.log("fourth", fourth.x, fourth.y, "\n\n")

                    parent.sideLenght = 0
                }
            }
        }
    }

    Component.onCompleted: squareComponent.createObject(parent)
}

Они делятся, но корректно делится только квадрат (0, 0), а у остальные получаются со смещением по x или по y на величину родителя. Qt 5.0.1. Как мне исправить данное поведение, является ли это багом?

UPD: Логирование говорит, что элементы расположены правильно, а по факту нет.

 ,

YarikRock
()

Google test

Захотелось освоить tdd, решил использовать google c++ testing framework. Как правильно его использовать? Создавать проект, который будет включать .h из тестируемого проекта( тогда возникает проблема с cpp файлами, которые не будут находиться, следовательно не будут находится определения функций), или же писать тесты прямо в тестируемом проекте и делать это с условной компиляцией?

int main()
{
#ifdef UNIT_TEST
    return RUN_ALL_TESTS();
#else
    run_useful_code();
    return 0;
#endif
}

Второй вариант видится мне плохим, так как необходимо разграничивать эти сущности. Какая принята практика при tdd?

 google test,

YarikRock
()

[SQL] Структура БД

Имеем предметную область, в которой у нас есть корабли, маршруты кораблей и датчики кораблей(3 таблицы). Значений датчиков очень много, около 10 000 000, маршрутов до 100. В датчиках надо выполнять сложные функции выборок значений, которые занимают по 20 секунд. Это много. Поля проиндексированы. Мой руководитель предложил сделать следующее. При добавлении маршрута корабля создается отдельная таблица датчиков, название которой формируется по типу shipID||'___'||routeID. И обращение к датчикам происходит не по id маршрута, а по сформированному имени таблицы. Тоесть таблиц с датчиками у нас получается сколько маршрутов. Это бред как я считаю и очень неудобно, но время выборки сокращается до 1 секунды.

Как выйти из этой ситуации? Время критично.

 

YarikRock
()

[PostgreSQL] Значение, возращаемое функцией

Здравствуйте, имею функцию, пробовал возращаемое значение table и собственного типа getSensorType.
Возращает не так:
time_t | value
-------+-------
105 | 117
2054 | 676 , а так:

getsensorvalues
-----------------
(105,117)
(2054,676)

При вызове этой функции из программы результат выдает не как пары значений 105, 117, а как одну строку "(105,117)"
Подскажите где я ошибся, пожалуйста.

CREATE OR REPLACE FUNCTION getSensorValues(firstTime integer, lastTime integer, step integer, insensorid integer)
returns setof getSensorType as --table(otime_t integer, ovalue float8) as
$$
declare
firstTime integer := $1;
counter integer := 0;
localStep integer := $3/10 + 1;
getSens getSensorType;
occ record;
begin
  while firstTime < $2 + 1 
  loop
  for occ in select time_t, value from sensors
  where sensorsid = $4 and time_t = (select min(time_t) from sensors
  where sensorsid = $4 and time_t >= (firstTime - (localStep/2) + (localStep*counter))
  and time_t < (firstTime + (localStep/2) + (localStep*counter)))
  loop
  getSens.otime_t := occ.time_t;
  getSens.ovalue := occ.value;
  return next getSens;
  end loop;
  firstTime := firstTime + $3;

  if (getSens.otime_t is NULL) then
    if (getSens.ovalue is NULL) then
      if (counter < 9) then
    firstTime := firstTime - $3;
    counter := counter + 1;
      end if;
    end if;
  end if;

  end loop;
return;
end;
$$
language 'plpgsql';

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

create type getSensorType as
(
otime_t integer,
ovalue float8
);

 

YarikRock
()

RSS подписка на новые темы