[C++] Модули для работы с файлами Стима
-
- Разработчик
- Сообщения: 910
- Зарегистрирован: 09.01.2009
- Откуда: Переезжаю в /dev/null
- Благодарил (а): 7 раз
- Поблагодарили: 65 раз
- Контактная информация:
Почитал - прикольно, можно пользоваться в принципе.
По поводу тестов - надо какой-нить фреймворк для unit-тестов прикрутить - для полного счастья.
SVN почему-то не хочет лог коммитов показывать... Это у всех так?
По поводу тестов - надо какой-нить фреймворк для unit-тестов прикрутить - для полного счастья.
SVN почему-то не хочет лог коммитов показывать... Это у всех так?
- NiGHt-LEshiY
- Полковник
- Сообщения: 10258
- Зарегистрирован: 13.06.2008
- Откуда: Россия
- Благодарил (а): 752 раза
- Поблагодарили: 2667 раз
- Контактная информация:
Ну да, а давай ещё какую-нибудь модную штучку сделаем.. Да ну..фреймворк для unit-тестов
Кодекс поведения участников сообщества — обязательно к прочтению.
Просьба присылать сообщения об ошибках в ЛС.
Просьба присылать сообщения об ошибках в ЛС.
- Pr0Ger
- Модератор
- Сообщения: 1829
- Зарегистрирован: 16.01.2009
- Благодарил (а): 17 раз
- Поблагодарили: 214 раз
- Контактная информация:
NiGHt-LEshiY
зря ты так о их скептично, хорошая вещь на самом деле
покрытый тестами код безопаснее исправлять, ибо при поломке чего-то сразу упадут соответствующие тесты, причем покрывает случаи, когда фейл будет при очень специфичном вызове из определенного места, или происходить из-за сторонней зависимости
зря ты так о их скептично, хорошая вещь на самом деле
покрытый тестами код безопаснее исправлять, ибо при поломке чего-то сразу упадут соответствующие тесты, причем покрывает случаи, когда фейл будет при очень специфичном вызове из определенного места, или происходить из-за сторонней зависимости
- $t@t!c_V()1D
- Разработчик
- Сообщения: 2639
- Зарегистрирован: 06.12.2007
- Благодарил (а): 10 раз
- Поблагодарили: 29 раз
NiGHt-LEshiY
Мне кажется, мы это уже проходили.
Ещё интересно, вот типичный Леший, когда хочет программировать что-либо, будет брать для этого только vim, gcc и gdb? Даже если это будет GUI внезапно?..хотя нет, наверное, не будет.
Мне кажется, мы это уже проходили.
Ещё интересно, вот типичный Леший, когда хочет программировать что-либо, будет брать для этого только vim, gcc и gdb? Даже если это будет GUI внезапно?..хотя нет, наверное, не будет.
Последний раз редактировалось NiGHt-LEshiY 30.03.2012, 06:52, всего редактировалось 2 раза.
Причина: Да, +- погрешность на действительно нужные вещи. Не тесты должны проверять код, а программист.
Причина: Да, +- погрешность на действительно нужные вещи. Не тесты должны проверять код, а программист.
Another guy on them internets
Уважайте команду CSMania.RU - задавайте вопросы правильно!
Уважайте команду CSMania.RU - задавайте вопросы правильно!
-
- Разработчик
- Сообщения: 910
- Зарегистрирован: 09.01.2009
- Откуда: Переезжаю в /dev/null
- Благодарил (а): 7 раз
- Поблагодарили: 65 раз
- Контактная информация:
NiGHt-LEshiY
Вообще-то тесты - это такой способ проверки кода программистом...
Почитай про Test Driven Development. Про то, какие бывают тесты, зачем нужны их разные виды и почему их используют во всех адекватных крупных проектах.
Вообще-то тесты - это такой способ проверки кода программистом...
Почитай про Test Driven Development. Про то, какие бывают тесты, зачем нужны их разные виды и почему их используют во всех адекватных крупных проектах.
- andreil
- Разработчик
- Сообщения: 781
- Зарегистрирован: 14.08.2006
- Откуда: Светлогорск, Беларусь
- Поблагодарили: 2 раза
- Контактная информация:
Те тесты, которые я включил и включал в код, служили мне для:
- собственно проверки функционала;
- Проверки на утчечки памяти (поэтому у меня все они крутятся в бесконечном цикле :) .
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).
-
- Разработчик
- Сообщения: 910
- Зарегистрирован: 09.01.2009
- Откуда: Переезжаю в /dev/null
- Благодарил (а): 7 раз
- Поблагодарили: 65 раз
- Контактная информация:
andreil
Угу, правильный подход %) Но со временем их может стать неудобно поддерживать или расширять, поэтому я и говорю о фреймворке. А так - у тебя уже вполне себе есть небольшие юнит-тесты %)
Добавлено спустя 6 минут 3 секунды:
Но советую не использовать указатели - это C стиль, а ты пишешь на С++. На С++, как ни странно, можно писать безопасно %). Как не использовать указатели можно подсмотреть, например, в видео-презентации C++11, ссылку на которую я выкладывал где-то здесь. Лучше используй векторы, или, если совсем приспичит, shared/smart-поинтеры (и, соответственно, никогда руками не пиши new/delete, а размещай все на стеке, тогда и утечек не будет).
PS: утечки часто возникают при использовании эксепшенов, но и не только. Поэтому использовать new/delete и поинтеры вредно.
Угу, правильный подход %) Но со временем их может стать неудобно поддерживать или расширять, поэтому я и говорю о фреймворке. А так - у тебя уже вполне себе есть небольшие юнит-тесты %)
Добавлено спустя 6 минут 3 секунды:
Но советую не использовать указатели - это C стиль, а ты пишешь на С++. На С++, как ни странно, можно писать безопасно %). Как не использовать указатели можно подсмотреть, например, в видео-презентации C++11, ссылку на которую я выкладывал где-то здесь. Лучше используй векторы, или, если совсем приспичит, shared/smart-поинтеры (и, соответственно, никогда руками не пиши new/delete, а размещай все на стеке, тогда и утечек не будет).
PS: утечки часто возникают при использовании эксепшенов, но и не только. Поэтому использовать new/delete и поинтеры вредно.
- andreil
- Разработчик
- Сообщения: 781
- Зарегистрирован: 14.08.2006
- Откуда: Светлогорск, Беларусь
- Поблагодарили: 2 раза
- Контактная информация:
Мда, про вектора я забыл :( Быстренько перебил код под них - почти все ОК, только загрузка CDR'а теперь выдает Segmentation Fault :( Буду копать завтра, как проснусь.
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).
- andreil
- Разработчик
- Сообщения: 781
- Зарегистрирован: 14.08.2006
- Откуда: Светлогорск, Беларусь
- Поблагодарили: 2 раза
- Контактная информация:
Когда убью косяки, сразу же и обновлю ;)
PS: А так же хочу оптимизировать загрузку BLOB-структур и формат их хранения в памяти - на данный момент это очень ресурсоемкая задача кушает примерно 170Мб памяти и 5-7сек процессорного времени на полную загрузку CDR'а (который на диске в распакованном виде занимает примерно 22Мб).
PS: А так же хочу оптимизировать загрузку BLOB-структур и формат их хранения в памяти - на данный момент это очень ресурсоемкая задача кушает примерно 170Мб памяти и 5-7сек процессорного времени на полную загрузку CDR'а (который на диске в распакованном виде занимает примерно 22Мб).
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).
- andreil
- Разработчик
- Сообщения: 781
- Зарегистрирован: 14.08.2006
- Откуда: Светлогорск, Беларусь
- Поблагодарили: 2 раза
- Контактная информация:
Я наконец-то вернулся. Долгое отсутствие было связанно с копанием в железках (AVR), мелкой поломкой ноутбука (обрыв шлейфа монитора) и началом осыпания винта на нем. В итоге я на данный момент не могу установить Windows на ноут. Поэтому перешел на Ubuntu :D (а сейчас перехожу на Gentoo).
Через пару деньков вернусь хотя бы к данному проекту. Но с одним но - в ближайшее время разработка будет вестись только под *NIX-платформу, под Windows потом буду добавлять код.
От всех хочется услышать, что требуется написать кроме следующего (что и так планируется/сделано):
PS: У меня появился постоянный контакт в Skype - почти всегда on-line, но читать сообщения могу только периодически.
Через пару деньков вернусь хотя бы к данному проекту. Но с одним но - в ближайшее время разработка будет вестись только под *NIX-платформу, под Windows потом буду добавлять код.
От всех хочется услышать, что требуется написать кроме следующего (что и так планируется/сделано):
- Чтение и по возможности запись различных форматов файлов (частично уже реализовано);
- Работа с Steam-протоколами (необходимо портировать протокол 2-ой версии и разобраться с 3-ей).
PS: У меня появился постоянный контакт в Skype - почти всегда on-line, но читать сообщения могу только периодически.
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).
-
- Нович0к
- Сообщения: 15
- Зарегистрирован: 25.09.2013
- Поблагодарили: 2 раза
- Контактная информация:
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:
как это делается на C++11:
ну и т.д.
Привет, как можно скачать с репы исходники?
прямой чекаут 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;
}
Код: Выделить всё
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);
}
- $t@t!c_V()1D
- Разработчик
- Сообщения: 2639
- Зарегистрирован: 06.12.2007
- Благодарил (а): 10 раз
- Поблагодарили: 29 раз
Rififi
Ах если бы ему было когда этим всем заниматься...GCF - прошлый век. NCF уж точно. Так, для интереса может и можно оставить, но не более.
Ах если бы ему было когда этим всем заниматься...GCF - прошлый век. NCF уж точно. Так, для интереса может и можно оставить, но не более.
Another guy on them internets
Уважайте команду CSMania.RU - задавайте вопросы правильно!
Уважайте команду CSMania.RU - задавайте вопросы правильно!