LINUX.ORG.RU

Сообщения andreyse

 

Вычислительные сети, распределение задач

Форум — General

Приветствую! Прошу помощи по технически сложной задаче:

Есть разработчики, пишущие программный код на различных языках - от C и R до VB6(OLE,COM).Есть ряд машин, под управлением ОС Windows.

Необходимо иметь возможность собирать исходники в бинарники и зупускать их на выбранных машинах. По-сути необходимо построить вычислительную сеть:

[Компилируемые сырцы] -> [Сборка] -> [Задача для исполнения(исполнить X раз с такими-то параметрами на выбраных машинах из сети)] -> [Забрать результат и сохранить]

Бинарники проводят математические рассчеты, данные(десятки гигабайт) берут с сетевого диска.

Была идея реализовать вычисления на основе BOINC-сети, не устроила по причине необходимости специальной сборки сырцов. Написание подобной сети пока не рассматриваю как вариант, интересуют открытые системы с возможностью дописки/шлефовки.

Знаете ли вы о каких-либо подобных системах?

andreyse
()

C работа/певевод timezone для существующей time_t

Форум — Development

Приветствую.

Есть time_t метка времени, UTC. Необходимо получить метку времени для CET(UTC+1). Каким образом это можно было бы сделать? Просто прибавить 3600 - не вариант, так как есть еще Daylight saving => CET->CEST(UTC+2). Какие верианты/возможности можно было бы использовать для преобразования времени к разным поясам?

Язык разработки: С(99)
Возможность использования сторонних библиотек для работы с временем имеется.

Спасибо!

andreyse
()

C, double compare function

Форум — Development

Всем доброй ночи. Ребят, подскажите, пожалуйста, в каких случаях моя реализация функции сравнения будет работать некорректно(в реальном использовании сравниваться будут double'ы с точностью до 8-10 знака)

bool compare_doubles(const double const* one, const double const* two, unsigned int float_points)
{
	assert(one != NULL);
	assert(two != NULL);
	assert(float_points > 0);

	unsigned int multiplexor = 1;
	for (unsigned int index = 0; index < float_points; ++index)
		multiplexor *= 10;

	return ((int)((*one - *two) * multiplexor)) == 0;
}

Я читал мнения и разработки других людей. К примеру обсуждение тут: http://stackoverflow.com/questions/17333/most-effective-way-for-float-and-dou... , но не могу найти нужную реализацию :(

andreyse
()

mysq, два подключения, выборка и изменение на лету

Форум — Development

Приветствую.

Есть два подключения к базе данных. Первое используется для забора данных:

SELECT time, value FROM `table` WHERE time <= 1268409464 AND time >= 0 ORDER BY time LIMIT 86400

Второе для изменений

UPDATE `table` SET value=1.1 WHERE time=919462145

Т.е. хочется реализовать такой алгоритм: while (has rows) { fetch_row(connection #1); change_row(connection #2, value); }

Исползуя MyISAM тип базы данных, забор данных просто тихо прекращается. Используя InnoDB получаю «The total number of locks exceeds the lock tables».

> show full processlist;

| Id  | User           | Host                 | db      | Command | Time | State          | Info 
| 109 | user            | ip:39753 | database | Query   |    6 | Locked         | UPDATE EUR_USD SET value=1.126700 WHERE time=918252890                                                            |
| 110 | user            | ip:39754 | database | Query   |    6 | Writing to net | SELECT time, value FROM  `table` WHERE time <= 1268433749 AND time >=  918047320 ORDER BY time LIMIT 86400 |

Такая ситуация происходит если подключатся к серверу, запущенному на той же машине(вне зависимости от типа подключения tcp/unix socket). При удаленном подключении все работает корректно. Судя по processlist, mysql блокирует исполнение UPDATE запроса при локальном подключении.

Подскажите, в чем моя ошибка, что почитать?

--- Program language: C [gcc version 4.4.3 20100108] MySQL: Ver 14.14 Distrib 5.1.41, for linux-gnu (i486) using readline 6.1

andreyse
()

Предотвращение утечки информации

Форум — Admin

Приветствую!

Есть: компания, занимающаяся разработкой программного обеспечения. Все разработчики работают на ноутбуках под управлением OS GNU/Linux Debian.

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

Каким образом можно было бы реализовать данную задачу? Есть ли возможность отключить на программном уровне usb/card reader/wi-fi? Что почитать?

Списибо!

andreyse
()

C, операции с числами с плавающей точкой

Форум — Development

Приветствую. Столкнулся с невполне понятной ситуацией - изменение точности рассчетов с числами с плавающей точкой. Простейший пример:

$ cat test.c

#include <stdio.h>

int main()
{
	double x = 1.23523999932567346;
	
	double y;
	unsigned int i;
	for (i = 1; i < 100000; i *= 10)
	{
		y = x*i;
		printf("%.32f * %d = %.32f\n", x, i, y);
	}

	return 0;
}

Результат исполнения:

$ ./a.out |column -t

1.23523999932567352111334457731573  *  1      =  1.23523999932567352111334457731573
1.23523999932567352111334457731573  *  10     =  12.35239999325673565522265562321991
1.23523999932567352111334457731573  *  100    =  123.52399993256734944679919863119721
1.23523999932567352111334457731573  *  1000   =  1235.23999932567357973312027752399445
1.23523999932567352111334457731573  *  10000  =  12352.39999325673488783650100231170654

С 17 символа результата умножения идут существенные различия. Т.е. результат умножения отличен от того, что бы получил я, сделав это руками.

С чем это связано(с принципом хранения чисел с п.т. или ...)? Как этого избежать(long double также не спасает). Что почитать? Спасибо

andreyse
()

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