Russian Qt Forum
Ноябрь 24, 2024, 04:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2] 3 4 5   Вниз
  Печать  
Автор Тема: Переходничок  (Прочитано 45395 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #15 : Сентябрь 07, 2010, 20:20 »

Особенно интересно будет послушать про использование этого класса в многопоточных программах  Смеющийся
Ну здесь не амфитеатр и я не гладиатор чтобы сражаться со львами и тиграми  Улыбающийся  Хотя класс вполне подходит для работы с 2 или более нитками. Нет никакого "подвоха", ничего "такого особенного" что нужно раскурить в манах и.т.п. Класс просто "рабочая лошадка"  без которой жить - ну можно. но хреново  Улыбающийся
Записан
Denjs
Гость
« Ответ #16 : Сентябрь 07, 2010, 21:42 »

это конкурс "догадайся зачем это нужно" ?
Ну если в Вашем проекте таких проблем (пока) не возникло - незачем тратить время на догадки  Улыбающийся
о даа) это в стиле "я знаю где в этой темной комнате гавна навалено, но если вы в него не вляпались - то и незачем вам знать как его обходить"  Веселый

Давайте лучше организуем отдельный раздел - "угадай задачу"?
Цитировать
- я угадаю назначение данного кода с 5-и KSLOC...
- а я с 4-х.
- Угадывай))))
« Последнее редактирование: Сентябрь 07, 2010, 21:52 от Denjs » Записан
ufna
Гость
« Ответ #17 : Сентябрь 08, 2010, 00:55 »

Ну реально, я считаю что делать "вот вам код" - это невежливо как минимум. И вот хз насколько он необходим и нужен.
Записан
Sancho_s_rancho
Гость
« Ответ #18 : Сентябрь 08, 2010, 08:59 »

Ну реально, я считаю что делать "вот вам код" - это невежливо как минимум. И вот хз насколько он необходим и нужен.
Это интернет, деточка. Здесь могут показать код и не сказать, что он делает! (Шутка)  Смеющийся
А ежели по теме: так пущай висит, может кто любит головоломки. Я вот не справился. Совсем.
Записан
SABROG
Гость
« Ответ #19 : Сентябрь 08, 2010, 09:26 »

Похоже на Listener.
Записан
BaltikS
Гость
« Ответ #20 : Сентябрь 08, 2010, 10:30 »

Расскажите, пожалуйста, для чего нужен этот класс (с примером желательно) Улыбающийся? И как проект не сможет жить без него нормально?
Полный ответ на этот вопрос занял бы много страниц - и все равно, вероятно, не был бы полным. Я не знаю как объяснить, я просто понял что надо так делать  Улыбающийся
Поржал.....Веселый  ... если не ясно для чего это, то разбираться тем более не буду....
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #21 : Сентябрь 08, 2010, 11:41 »

Поржал.....Веселый 
Я тоже  Улыбающийся
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #22 : Сентябрь 08, 2010, 17:10 »

ржачь по этому посту в конфе c_plus_plus@conference.jabber.ru

http://0xd34df00d.me/logs/chat/c_plus_plus@conference.jabber.ru/2010/09/08.html#11:15:53
 Смеющийся
Записан

Гугль в помощь
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #23 : Сентябрь 09, 2010, 07:05 »

Igors, или добавь описание в первый пост, или удалю ветку.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
BRE
Гость
« Ответ #24 : Сентябрь 09, 2010, 11:23 »

Признаться, я был удивлен что такая банальная вещь вызвала такие трудности с understand'ом  Улыбающийся
Трудности.  Улыбающийся
Я думаю многе ждали, когда же ты напишешь как ты "это" используешь, что бы сказать что так делать не нужно. Никогда.  Улыбающийся
Что это "решение", имеет больше ограничений, чем делает полезных вещей.
Посмотри на досуге на "паттерны", там ты найдешь более красивые решения... Если сам ничего лучше придумать не смог. Без обид. Подмигивающий
Записан
Denjs
Гость
« Ответ #25 : Сентябрь 09, 2010, 11:55 »

гм... Igors есть адепт религия который не позволять мочь использовать сигнал-слотовый механизЪм ?
Igors не знает про существование сигнал-слотового механихзма? это на форуме QT предлагать такие решения?  Непонимающий
фи как грубо... ))))
« Последнее редактирование: Сентябрь 09, 2010, 12:00 от Denjs » Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #26 : Сентябрь 10, 2010, 11:58 »

что бы сказать что так делать не нужно. Никогда.  Улыбающийся
Что это "решение", имеет больше ограничений, чем делает полезных вещей.
Пожалуйста, критикуйте . Покажите как лучше - и я с удовольствием у Вас поучусь (было бы чему  Улыбающийся)
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #27 : Сентябрь 10, 2010, 12:32 »

doublefacepalm

Пантер удаляй этот тред к ч..й бабушке
Записан

Гугль в помощь
BRE
Гость
« Ответ #28 : Сентябрь 10, 2010, 13:03 »

Пожалуйста, критикуйте . Покажите как лучше - и я с удовольствием у Вас поучусь (было бы чему  Улыбающийся)
Посмотрим на функционал, о котором можно писать книги и все равно его не описать...  Улыбающийся

Код
C++ (Qt)
// Долгие вычисления чего-то там...
int Class::func1()
{
CMeshTextIndicator indicator;
CMeshProgress::SetIndicator( "Calculating ...", mList.size() );
for( size_t i = 0; i < count; ++i )
{
...
if ( !CMeshProgress::Update( i, 100 ) )
return ERR_USER_CANCEL;
}
}
 
// Очень долгие вычисления
int Class::func2()
{
CMeshTextIndicator indicator;
CMeshProgress::SetIndicator( "Big Calculating ...", mList.size() + mList2.size() );
for( ... )
{
}
 
func1(); // <<<<<< Вот после выхода из func1 индикатор определенный в func2 отключиться.
// Так не надо было писать? Ну извините, я забыл про это ограничение. :)
 
for( ... )
{
}
 
}
 
...
 
// Считаем...
obj->func2();
 

Сейчас мы "побороли" задачу индикации прогресса выполнения функции. Мы добавили этот код в разные классы и вроде все хорошо, но...
Теперь нам понадобилось вести статистику всех расчетов, что делать? Полезть во все функции и добавить аналогичную приблуду. А если потом понадобиться во время расчета отправлять результаты расчетов по сети, например Улыбающийся. Тоже полезем во все функции и добавим еще одну такую приблуду? А если это нужно будет опционально. А если нужно будет считать разные функции в разных потоках?

Хотели отвязаться от одних классов, а привязались к другим?

А если посмотреть на паттерн Observe (наблюдатель), то можно научить наш класс общаться с классом-наблюдателем и на его базе создать классы, объекты которых могут выводить информацию о прогрессе, вести статистику и делать хрен знает что еще... И при этом на не придется ничего изменять в нашем классе.
Это классический вариант.

Код
C++ (Qt)
Statistica st;
 
...
 
CMeshCalculator calc;
calc.reg( new TextProgressIndicatorObserver ); // Регистрируем наблюдателя для вывода прогресса
if( useStatistica )
calc.reg( ?st ); // Если нужно - регистрируем наблюдателя для ведения статистики
 

Так же можно посмотреть сигналы реализованные в boost или отдельной библиотеке sigc++. Получится аналогичное решение, только еще больше отвязанное от классов участников (можно обойтись от класса-наблюдателя).
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #29 : Сентябрь 10, 2010, 13:13 »

Ололо, появилось описание!

Я в свое время делал специальный фреймворк для подобных целей, ибо надо развести многопоточность, плюс тип длительных работ варьируется (известное количество шагов, известное время исполнения, неизвестно ничего), потом надо дать возможность пользователю приостановить или отменить операцию.. потом если блокирует главный поток, то гуй нотификатора надо в отдельном потоке/процессе делать...

Короче идея понятна, но реализация должна быть посложнее..
Записан

Гугль в помощь
Страниц: 1 [2] 3 4 5   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.094 секунд. Запросов: 24.