CSmania.RU

Крупнейшее русскоязычное no-Steam сообщество


Часовой пояс: UTC + 4 часа [ Летнее время ]


CSmania.RU: VK | Facebook | Twitter


Начать новую тему Ответить на тему  [ Сообщений: 59 ]  На страницу Пред.  1, 2, 3, 4
{ VISITS } Просмотры: 3103  Закладки Закладки: 0  Подписки Подписки: 1 
Автор Сообщение
СообщениеДобавлено: 29 мар 2012, 23:14 
Разработчик
Разработчик
Не в сети
Зарегистрирован: 09 янв 2009, 15:09
Сообщения: 841
Темы: 29
Откуда: Переезжаю в /dev/null
Почитал - прикольно, можно пользоваться в принципе.
По поводу тестов - надо какой-нить фреймворк для unit-тестов прикрутить - для полного счастья.

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

_________________
Evaporation Project - completely frozen
Minehack Project Minecraft Launcher - released


Вернуться к началу
 Профиль
 
(0)
 
СообщениеДобавлено: 29 мар 2012, 23:26 
Администратор
Администратор
Аватара пользователя
Не в сети
Зарегистрирован: 13 июн 2008, 09:58
Сообщения: 10212
Темы: 84
Откуда: Русь
Цитата:
фреймворк для unit-тестов

Ну да, а давай ещё какую-нибудь модную штучку сделаем.. Да ну..

_________________
Fun!
Public key fingerprint: F5105FB138344E497C778183574C278600BEEBAB


Вернуться к началу
 Профиль
 
(0)
 
СообщениеДобавлено: 30 мар 2012, 00:54 
Модератор
Модератор
Аватара пользователя
Не в сети
Зарегистрирован: 16 янв 2009, 14:26
Сообщения: 1873
Темы: 6
NiGHt-LEshiY
зря ты так о их скептично, хорошая вещь на самом деле
покрытый тестами код безопаснее исправлять, ибо при поломке чего-то сразу упадут соответствующие тесты, причем покрывает случаи, когда фейл будет при очень специфичном вызове из определенного места, или происходить из-за сторонней зависимости


Вернуться к началу
 Профиль
 
(0)
 
СообщениеДобавлено: 30 мар 2012, 06:52 
Разработчик
Разработчик
Аватара пользователя
Не в сети
Зарегистрирован: 06 дек 2007, 06:45
Сообщения: 2892
Темы: 36
NiGHt-LEshiY
Мне кажется, мы это уже проходили.
Ещё интересно, вот типичный Леший, когда хочет программировать что-либо, будет брать для этого только vim, gcc и gdb? Даже если это будет GUI внезапно?..хотя нет, наверное, не будет.

_________________
Изображение
Уважайте команду CSMania.RU - задавайте вопросы правильно!


Последний раз редактировалось NiGHt-LEshiY 30 мар 2012, 09:34, всего редактировалось 1 раз.
Да, +- погрешность на действительно нужные вещи. Не тесты должны проверять код, а программист.


Вернуться к началу
 Профиль
 
(0)
 
СообщениеДобавлено: 30 мар 2012, 12:00 
Разработчик
Разработчик
Не в сети
Зарегистрирован: 09 янв 2009, 15:09
Сообщения: 841
Темы: 29
Откуда: Переезжаю в /dev/null
NiGHt-LEshiY
Вообще-то тесты - это такой способ проверки кода программистом...
Почитай про Test Driven Development. Про то, какие бывают тесты, зачем нужны их разные виды и почему их используют во всех адекватных крупных проектах.

_________________
Evaporation Project - completely frozen
Minehack Project Minecraft Launcher - released


Вернуться к началу
 Профиль
 
(0)
 
СообщениеДобавлено: 30 мар 2012, 17:22 
Разработчик
Разработчик
Аватара пользователя
Не в сети
Зарегистрирован: 14 авг 2006, 12:33
Сообщения: 848
Темы: 30
Откуда: Светлогорск, Беларусь
Те тесты, которые я включил и включал в код, служили мне для:
  1. собственно проверки функционала;
  2. Проверки на утчечки памяти (поэтому у меня все они крутятся в бесконечном цикле :) .

_________________
Репозиторий с моими проектами


Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.


В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).


Вернуться к началу
 Профиль
 
(0)
 
СообщениеДобавлено: 30 мар 2012, 19:42 
Разработчик
Разработчик
Не в сети
Зарегистрирован: 09 янв 2009, 15:09
Сообщения: 841
Темы: 29
Откуда: Переезжаю в /dev/null
andreil
Угу, правильный подход %) Но со временем их может стать неудобно поддерживать или расширять, поэтому я и говорю о фреймворке. А так - у тебя уже вполне себе есть небольшие юнит-тесты %)

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

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

_________________
Evaporation Project - completely frozen
Minehack Project Minecraft Launcher - released


Вернуться к началу
 Профиль
 
(0)
 
СообщениеДобавлено: 31 мар 2012, 04:36 
Разработчик
Разработчик
Аватара пользователя
Не в сети
Зарегистрирован: 14 авг 2006, 12:33
Сообщения: 848
Темы: 30
Откуда: Светлогорск, Беларусь
Мда, про вектора я забыл :( Быстренько перебил код под них - почти все ОК, только загрузка CDR'а теперь выдает Segmentation Fault :( Буду копать завтра, как проснусь.

_________________
Репозиторий с моими проектами


Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.


В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).


Вернуться к началу
 Профиль
 
(0)
 
СообщениеДобавлено: 31 мар 2012, 18:11 
Разработчик
Разработчик
Не в сети
Зарегистрирован: 09 янв 2009, 15:09
Сообщения: 841
Темы: 29
Откуда: Переезжаю в /dev/null
Обнови svn чтоли %)

_________________
Evaporation Project - completely frozen
Minehack Project Minecraft Launcher - released


Вернуться к началу
 Профиль
 
(0)
 
СообщениеДобавлено: 01 апр 2012, 01:32 
Разработчик
Разработчик
Аватара пользователя
Не в сети
Зарегистрирован: 14 авг 2006, 12:33
Сообщения: 848
Темы: 30
Откуда: Светлогорск, Беларусь
Когда убью косяки, сразу же и обновлю ;)

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

_________________
Репозиторий с моими проектами


Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.


В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).


Вернуться к началу
 Профиль
 
(0)
 
СообщениеДобавлено: 09 апр 2012, 21:19 
Сержант
Сержант
Не в сети
Зарегистрирован: 09 окт 2011, 00:12
Сообщения: 46
Темы: 4
юзал как то подобную штуку на NET, жаль больше половины функций к моменту как я ее нашел уже не работало :(. обновляют заразы


Вернуться к началу
 Профиль
 
(0)
 
СообщениеДобавлено: 16 сен 2012, 01:01 
Разработчик
Разработчик
Аватара пользователя
Не в сети
Зарегистрирован: 14 авг 2006, 12:33
Сообщения: 848
Темы: 30
Откуда: Светлогорск, Беларусь
Я наконец-то вернулся. Долгое отсутствие было связанно с копанием в железках (AVR), мелкой поломкой ноутбука (обрыв шлейфа монитора) и началом осыпания винта на нем. В итоге я на данный момент не могу установить Windows на ноут. Поэтому перешел на Ubuntu :D (а сейчас перехожу на Gentoo).

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

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


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

_________________
Репозиторий с моими проектами


Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.


В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).


Вернуться к началу
 Профиль
 
(1)
 
СообщениеДобавлено: 26 сен 2013, 14:02 
Нович0к
Нович0к
Не в сети
Зарегистрирован: 25 сен 2013, 20:55
Сообщения: 5
Темы: 1
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 > conv;

std::wstring utf8_to_unicode(const std::string& utf8_string)
{
   return conv.from_bytes(utf8_string);
}


ну и т.д.


Вернуться к началу
 Профиль
 
(0)
 
СообщениеДобавлено: 26 сен 2013, 17:49 
Разработчик
Разработчик
Аватара пользователя
Не в сети
Зарегистрирован: 06 дек 2007, 06:45
Сообщения: 2892
Темы: 36
Rififi
Ах если бы ему было когда этим всем заниматься...GCF - прошлый век. NCF уж точно. Так, для интереса может и можно оставить, но не более.

_________________
Изображение
Уважайте команду CSMania.RU - задавайте вопросы правильно!


Вернуться к началу
 Профиль
 
(0)
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 59 ]  На страницу Пред.  1, 2, 3, 4

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:

Powered by phpBB® Forum Software © phpBB Group
© CSmania.RU Network, 2004–2012