Требуется написать CGI-приложение на c++ под FreeBSD, которое взаимодействует с базой данных MySQL.

В базе данных есть таблица (int ID,int TID,float X,float Y,float Z,datetime LASTREFRESH)

1.Приложение принимает на вход параметры [int id],float x,float y,float z (id не обязательный параметр)

2a.если id не пришел, делаем новую запись в таблице

(соответственноID,TID генерируются уникальные, причем id!=tid, X=x,Y=y,Z=z,LASTREFRESH=now())

и запоминаем сгенерированное TID

2b.если пришел id, то пытаемся сделать update записи

(где TID=id делаем X=x,Y=y,Z=z,LASTREFRESH=now())

если ничего не нашлось, то действуем как в 2а, то есть создаем новый ряд.

3.далее из таблицы мы выбираем ряды, для которых SQRT(SQR(X-x)+SQR(Y-y)+SQR(Z-z))

жестко прописана в c++ коде. Попросту говоря, мы выбираем те ряды, расстояние по координатам от которых меньше R.

4.Удаляем из таблицы записи, старше 10 минут

5.формируем ответ так

если выполняли шаг 2а, то есть заново добавляли ряд, то в первой строчке

TID

далее на каждый выбранный в шаге 3 ряд формируем строчку

ID(X,Y,Z)

Задача довольно тривиальная, однако есть места, где можно проявить творческий подход,

например как оптимизировать вычисление расстояния, как эффективнее написать SQL-запросы и т.п.

Приложение должно работать быстро и стабильно, ожидаемая нагрузка >1000 обращений в секунду.

Предполагается, что Вы продемонстрируете работу приложения на своем хостинге, а потом мы выкупим у Вас исходник за обозначенную цену

Примеры:

1)

-вызов приложения:

wwww.domain.com/fastxyz?id=78&x=0.10&y=123.45&z=31231.67

(x,y,z с двумя знаками после запятой)

-пример ответа

12(12.12,13.13,15.12)

18(100.00,13.1345,11.22)

145(34.23,11.19,15.12)

2)

-вызов приложения:

wwww.domain.com/fastxyz?x=0.10&y=123.45&z=31231.67

-пример ответа

67

12(12.12,13.13,15.12)

18(100.00,13.1345,11.22)

145(34.23,11.19,15.12)

17 лет назад
limenutt
Гость 
125 лет
18 лет в сервисе
Был
13 лет назад

Выбранный исполнитель

migashko
125 лет
19 лет в сервисе
Был
17 лет назад
17 лет назад

Заявки фрилансеров

migashko
125 лет
19 лет в сервисе
Был
17 лет назад
17 лет назад