Страница 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
Те тесты, которые я включил и включал в код, служили мне для:
- собственно проверки функционала;
- Проверки на утчечки памяти (поэтому у меня все они крутятся в бесконечном цикле :) .
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 потом буду добавлять код.
От всех хочется услышать, что требуется написать кроме следующего (что и так планируется/сделано):
- Чтение и по возможности запись различных форматов файлов (частично уже реализовано);
- Работа с 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 уж точно. Так, для интереса может и можно оставить, но не более.