Страница 4 из 4

Re: [C++] Модули для работы с файлами Стима

Добавлено: 29.03.2012, 23:14
MOZGIII
Почитал - прикольно, можно пользоваться в принципе.
По поводу тестов - надо какой-нить фреймворк для unit-тестов прикрутить - для полного счастья.

SVN почему-то не хочет лог коммитов показывать... Это у всех так?

Re: [C++] Модули для работы с файлами Стима

Добавлено: 29.03.2012, 23:26
NiGHt-LEshiY
фреймворк для unit-тестов
Ну да, а давай ещё какую-нибудь модную штучку сделаем.. Да ну..

Re: [C++] Модули для работы с файлами Стима

Добавлено: 30.03.2012, 00:54
Pr0Ger
NiGHt-LEshiY
зря ты так о их скептично, хорошая вещь на самом деле
покрытый тестами код безопаснее исправлять, ибо при поломке чего-то сразу упадут соответствующие тесты, причем покрывает случаи, когда фейл будет при очень специфичном вызове из определенного места, или происходить из-за сторонней зависимости

Re: [C++] Модули для работы с файлами Стима

Добавлено: 30.03.2012, 06:52
$t@t!c_V()1D
NiGHt-LEshiY
Мне кажется, мы это уже проходили.
Ещё интересно, вот типичный Леший, когда хочет программировать что-либо, будет брать для этого только vim, gcc и gdb? Даже если это будет GUI внезапно?..хотя нет, наверное, не будет.

Re: [C++] Модули для работы с файлами Стима

Добавлено: 30.03.2012, 12:00
MOZGIII
NiGHt-LEshiY
Вообще-то тесты - это такой способ проверки кода программистом...
Почитай про Test Driven Development. Про то, какие бывают тесты, зачем нужны их разные виды и почему их используют во всех адекватных крупных проектах.

Re: [C++] Модули для работы с файлами Стима

Добавлено: 30.03.2012, 17:22
andreil
Те тесты, которые я включил и включал в код, служили мне для:
  1. собственно проверки функционала;
  2. Проверки на утчечки памяти (поэтому у меня все они крутятся в бесконечном цикле :) .

Re: [C++] Модули для работы с файлами Стима

Добавлено: 30.03.2012, 19:48
MOZGIII
andreil
Угу, правильный подход %) Но со временем их может стать неудобно поддерживать или расширять, поэтому я и говорю о фреймворке. А так - у тебя уже вполне себе есть небольшие юнит-тесты %)

Добавлено спустя 6 минут 3 секунды:
Но советую не использовать указатели - это C стиль, а ты пишешь на С++. На С++, как ни странно, можно писать безопасно %). Как не использовать указатели можно подсмотреть, например, в видео-презентации C++11, ссылку на которую я выкладывал где-то здесь. Лучше используй векторы, или, если совсем приспичит, shared/smart-поинтеры (и, соответственно, никогда руками не пиши new/delete, а размещай все на стеке, тогда и утечек не будет).

PS: утечки часто возникают при использовании эксепшенов, но и не только. Поэтому использовать new/delete и поинтеры вредно.

Re: [C++] Модули для работы с файлами Стима

Добавлено: 31.03.2012, 04:36
andreil
Мда, про вектора я забыл :( Быстренько перебил код под них - почти все ОК, только загрузка CDR'а теперь выдает Segmentation Fault :( Буду копать завтра, как проснусь.

Re: [C++] Модули для работы с файлами Стима

Добавлено: 31.03.2012, 18:11
MOZGIII
Обнови svn чтоли %)

Re: [C++] Модули для работы с файлами Стима

Добавлено: 01.04.2012, 01:32
andreil
Когда убью косяки, сразу же и обновлю ;)

PS: А так же хочу оптимизировать загрузку BLOB-структур и формат их хранения в памяти - на данный момент это очень ресурсоемкая задача кушает примерно 170Мб памяти и 5-7сек процессорного времени на полную загрузку CDR'а (который на диске в распакованном виде занимает примерно 22Мб).

Re: [C++] Модули для работы с файлами Стима

Добавлено: 09.04.2012, 21:19
Villain
юзал как то подобную штуку на NET, жаль больше половины функций к моменту как я ее нашел уже не работало :(. обновляют заразы

Re: [C++] Модули для работы с файлами Стима

Добавлено: 16.09.2012, 01:01
andreil
Я наконец-то вернулся. Долгое отсутствие было связанно с копанием в железках (AVR), мелкой поломкой ноутбука (обрыв шлейфа монитора) и началом осыпания винта на нем. В итоге я на данный момент не могу установить Windows на ноут. Поэтому перешел на Ubuntu :D (а сейчас перехожу на Gentoo).

Через пару деньков вернусь хотя бы к данному проекту. Но с одним но - в ближайшее время разработка будет вестись только под *NIX-платформу, под Windows потом буду добавлять код.

От всех хочется услышать, что требуется написать кроме следующего (что и так планируется/сделано):
  1. Чтение и по возможности запись различных форматов файлов (частично уже реализовано);
  2. Работа с Steam-протоколами (необходимо портировать протокол 2-ой версии и разобраться с 3-ей).

PS: У меня появился постоянный контакт в Skype - почти всегда on-line, но читать сообщения могу только периодически.

Re: [C++] Модули для работы с файлами Стима

Добавлено: 26.09.2013, 14:02
Rififi
andreil

Привет, как можно скачать с репы исходники?
прямой чекаут svn-клиентом просит логин/пароль

PS. Посмотрел те, которые приаттачены в первом сообщении.
очень много направлений для улучшения.

- во-первых, почему не используешь C++, а пишешь в "фортран-стайл"?

- char* вместо std::string???

- далее, константность указателей и мембер-функций ты совсем не используешь, это сильно режет глаз

- таже фигня с префиксом this-> - это спросто синтаксический мусор, который отвлекает от кода

- несоответсвие типа операторов new/delete - выделяешь память как для массива, удаляешь как для указателя

- зачем вообще ручное управление памятью в программе на C++??? oO смарт-поинтеры рулят.

StreamData *Data = new StreamData();
memset(Data, 0, sizeof(StreamData));

так делать нельзя.

да и вообще, не мешало бы перевести код на C++, благо сейчас это уже ни разу ни раритет
почему это стоит сделать - пример как ты переводишь utf8 в ucs-2:

Код: Выделить всё

wchar_t * utf8_to_unicode(char *utf8_string)
{
	int err;
	wchar_t * res;
	int res_len = MultiByteToWideChar(
		CP_UTF8,			// Code page
		0,					// No flags
		utf8_string,		// Multibyte characters string
		-1,					// The string is NULL terminated
		NULL,				// No buffer yet, allocate it later
		0					// No buffer
		);
	if (res_len == 0) 
	{
		printf("Failed to obtain utf8 string length\n");
		return NULL;
	}
	res = (wchar_t *)calloc(sizeof(wchar_t), res_len);
	if (res == NULL) 
	{
		printf("Failed to allocate unicode string\n");
		return NULL;
	}
	err = MultiByteToWideChar(
		CP_UTF8,			// Code page
		0,					// No flags
		utf8_string,		// Multibyte characters string
		-1,					// The string is NULL terminated
		res,				// Output buffer
		res_len				// buffer size
		);
	if (err == 0)
	{
		printf("Failed to convert to unicode\n");
		free(res);
		return NULL;
	}
	return res;
}
как это делается на C++11:

Код: Выделить всё

std::wstring_convert<std::codecvt_utf8<wchar_t> > conv;

std::wstring utf8_to_unicode(const std::string& utf8_string)
{
   return conv.from_bytes(utf8_string);
}
ну и т.д.

Re: [C++] Модули для работы с файлами Стима

Добавлено: 26.09.2013, 17:49
$t@t!c_V()1D
Rififi
Ах если бы ему было когда этим всем заниматься...GCF - прошлый век. NCF уж точно. Так, для интереса может и можно оставить, но не более.