www.mudconnector.su

Национальный мадконнектор.
Текущее время: Сб апр 27, 2024 2:31 pm

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




Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу Пред.  1, 2, 3
Автор Сообщение
СообщениеДобавлено: Вт июн 17, 2008 11:39 pm 
Не в сети

Зарегистрирован: Вт май 27, 2008 1:06 pm
Сообщений: 60
Откуда: Питер
KadVar писал(а):
Реально ? ОМГ, как я последние лет 10 жил :( вся жизнь считай зря прожита :(((
Что, помогает и от kernel error ? blue screen of death ?
И от power failure ?

Вообще же обработчики исключений во-многом миф, я в своей жизни не видел ни одного
приложения, которое могло бы что-то продолжить после скажем: disk write error,
database index corrupt, и даже после банального divide by zero.
Искючения увы возникают обычно не там, где были ошибки.
Бесспорно, обработка исключений полезнейшая функция... обычно сводящаяся
к записи полезной дебаг-информации.

В общем по-моему зашли немного в тупик. Яж не против - применяйте, лично мое мнение,
что это никому не нужные навороты...


Ну что же... я уже применяю это в своем движке ... и скажу так ... это работает.

kernel error, blue screen of death - это ошибки уровня ядра ОС. Это в основном проблема
с железом и драйверами. Тут вины программы нету, неважно как она написана.
От этих ошибок, как и от power failure уберечься конечно нельзя исключениями.
Тут можно применять другой какой нибудь подход - например дамп мира в страничный файл.

А вот disk write error, database index corrupt, и даже divide by zero - обработке в общем
поддаются. Исключения помогают от ошибок в программе, которые могут приводить к падению.
Особенно это касается работы с указателями с и с++.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Ср июн 18, 2008 3:16 am 
Не в сети
Site Admin

Зарегистрирован: Пт май 16, 2008 4:14 pm
Сообщений: 1416
Дворак писал(а):
А вот disk write error, database index corrupt, и даже divide by zero - обработке в общем
поддаются. Исключения помогают от ошибок в программе, которые могут приводить к падению.
Особенно это касается работы с указателями с и с++.


Хоть убей не понимаю, что такого ты планируешь делать в обработчиках этих ошибок.
поймать-то их можно... но к сожалению, когда речь доходит до того, чтобы написать
реакцию очень быстро приходит в голову мысль, что "начались такие дебри, из которых
живым не вернутся". Спору нет, все можно... как говорил мой шеф "за все время и
все деньги мы сделаем всю работу". Но когда нет этого "всего" я не вижу смысл инвестировать
кучу времени в то, чтобы написать на 1 строку кода 10 срок обработчиков ошибок, и убедиться,
что не все сценарии были продуманы.

А зачем многопоточность применяете ? Цель какая ?
Не хватает производительности ?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Ср июн 18, 2008 11:56 am 
Не в сети

Зарегистрирован: Вт май 27, 2008 1:06 pm
Сообщений: 60
Откуда: Питер
KadVar писал(а):
Хоть убей не понимаю, что такого ты планируешь делать в обработчиках этих ошибок.
поймать-то их можно...
...
Но когда нет этого "всего" я не вижу смысл инвестировать
кучу времени в то, чтобы написать на 1 строку кода 10 срок обработчиков ошибок, и убедиться,
что не все сценарии были продуманы.

А зачем многопоточность применяете ? Цель какая ?
Не хватает производительности ?


У меня обработчики исключений - работают на одну цель - остановить сервер без потери данных.
После возникновения ошибки - она ловится в обработчике. Обработчик останавливает основной
цикл сервера и после этого сервер переходит на сохранение текущего состояния мира.
Тут не надо писать 10 или 100 обработчиков... Есть обработчик для всех исключений...

Многопоточность я использую для быстродействия... движок очень сильно усложняется, по
сравнению с существующими движками.
Производительности пока хватает, но это пока...
После добавления таймеров, которые работают по секундам, могут возникнуть сложности,
учитывая количество таймеров в самих мобах и объектах, помноженное на их количество в мире,
хочется максимально разгрузить основной игровой поток от второстепеннных задач.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Ср июн 18, 2008 2:41 pm 
Не в сети
Site Admin

Зарегистрирован: Пт май 16, 2008 4:14 pm
Сообщений: 1416
Дворак писал(а):
KadVar писал(а):
Хоть убей не понимаю, что такого ты планируешь делать в обработчиках этих ошибок.
поймать-то их можно...
...
Но когда нет этого "всего" я не вижу смысл инвестировать
кучу времени в то, чтобы написать на 1 строку кода 10 срок обработчиков ошибок, и убедиться,
что не все сценарии были продуманы.

А зачем многопоточность применяете ? Цель какая ?
Не хватает производительности ?


У меня обработчики исключений - работают на одну цель - остановить сервер без потери данных.
После возникновения ошибки - она ловится в обработчике. Обработчик останавливает основной
цикл сервера и после этого сервер переходит на сохранение текущего состояния мира.
Тут не надо писать 10 или 100 обработчиков... Есть обработчик для всех исключений...

Т.е. после порчи внутренних структур из-за ошибки вы сгрузите дефектную информацию
в базу ? Вопрос не праздный, я для себя долго думал... и сдается мне, лучше в этот момент
уже ничего не писать.

Дворак писал(а):
Многопоточность я использую для быстродействия... движок очень сильно усложняется, по
сравнению с существующими движками.
Производительности пока хватает, но это пока...
После добавления таймеров, которые работают по секундам, могут возникнуть сложности,
учитывая количество таймеров в самих мобах и объектах, помноженное на их количество в мире,
хочется максимально разгрузить основной игровой поток от второстепеннных задач.

Ясно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Ср июн 18, 2008 6:23 pm 
Не в сети

Зарегистрирован: Вт май 27, 2008 1:06 pm
Сообщений: 60
Откуда: Питер
KadVar писал(а):
Т.е. после порчи внутренних структур из-за ошибки вы сгрузите дефектную информацию
в базу ? Вопрос не праздный, я для себя долго думал... и сдается мне, лучше в этот момент
уже ничего не писать.


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

Получается что в случае креша - потеряются только изменения с последней точки состояния
мира в дампе.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Чт июн 19, 2008 12:43 pm 
Не в сети
Site Admin

Зарегистрирован: Пт май 16, 2008 4:14 pm
Сообщений: 1416
Дворак писал(а):
KadVar писал(а):
Т.е. после порчи внутренних структур из-за ошибки вы сгрузите дефектную информацию
в базу ? Вопрос не праздный, я для себя долго думал... и сдается мне, лучше в этот момент
уже ничего не писать.


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

Получается что в случае креша - потеряются только изменения с последней точки состояния
мира в дампе.


А эээ... если уж так хочется, то что мешает использовать СУБД с транзакциями и закрывать их в гарантированно стабильных состояниях ? Я долго все это жевал... кругами.... и к окончательному решению увы не пришел. Есть масса аргументов ЗА использование СУБД, и несколько против.... в частности - она ломается вся целиком, а 24х365 админа у нас нету, увы... нереально это. Что делать - неясно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Чт июн 19, 2008 1:00 pm 
Не в сети

Зарегистрирован: Вт май 27, 2008 1:06 pm
Сообщений: 60
Откуда: Питер
KadVar писал(а):
А эээ... если уж так хочется, то что мешает использовать СУБД с транзакциями и закрывать их в гарантированно стабильных состояниях ? Я долго все это жевал... кругами.... и к окончательному решению увы не пришел. Есть масса аргументов ЗА использование СУБД, и несколько против.... в частности - она ломается вся целиком, а 24х365 админа у нас нету, увы... нереально это. Что делать - неясно.


Я тоже долго ходил вокруг СУБД. И решил отказаться по разным причинам, в том числе и те, которые привел ты - ломается целиком, пришлось бы зависить от стороннего ПО, не факт что было бы быстрее собственного решения, сложнорасширяемое решение. При развитии движка пришлось бы городить новые таблицы и менять старые. СУБД рулит при сложных взаимосвязях, а в маде связи наооборот простые... список мобов, объектов, чаров, где находяться и что имеют...
это все... СУБД получался для меня слишком избыточным. Поэтому перешел к простому дампу мира - в постраничном файле, где мир пишется в бинарном формате. Этот дамп требуется только в случае сбоя в работе... При нормальном завершении - вся информация сохраняется в хмл, а дамп файл удаляется.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пн июн 23, 2008 11:49 am 
Не в сети
Site Admin

Зарегистрирован: Пт май 16, 2008 4:14 pm
Сообщений: 1416
В принципе не вижу никаких проблем, кроме проблем с поддержкой.
С другой стороны... сломается и хрен с ним, пусть ломается. Утром приду и исправлю.
Это лучше, чем если будет потихоньку ломаться.... в процессе работы.

Основные плюсы - транзакции. Основные минусы - большая привязка к хостингу итп.
Скорость... трудно сказать, не думаю, что самописное будет заметно быстрее.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт июн 24, 2008 12:33 am 
Не в сети

Зарегистрирован: Вт май 27, 2008 1:06 pm
Сообщений: 60
Откуда: Питер
Тему о сериализации и СУБД решил перенести сюда...
http://forum.mudconnector.su/post410.html


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

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


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


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

Найти:
Перейти:  
cron