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

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 ... 3 4 [5] 6 7 ... 761
61  Qt / OpenGL / gluLookAt : Октябрь 08, 2021, 13:15
Добрый день

См аттач, напоминает гениальные ленинские определения, напр
Цитировать
Жизнь есть способ существования белковых тел

Дальнейшие объяснения вполне понятны, также легко найти вполне добросовестные разжевывания, напр это

Ну так если все понятно, тогда в чем вопрос ?  Улыбающийся Мне кажется что одна вещь здесь упущена, и она может оказаться важной. Также краткое определение, строго говоря, не совсем верно. А Вы как считаете ?

Спасибо
62  Компиляторы и платформы / Mac OS X / Re: Xcode Guard Malloc : Октябрь 03, 2021, 13:47
Да, краш нашел, псевдокод
Код
C++ (Qt)
void Loader::LoadMaps( const CKey & key )
{
 auto & dst = m_map[key];
 ...
 texture.LoadImage(..);
 UpdateProgress();
 ...
 dst.push_back(..);
}
UpdateProgress вызывает processEvents, и опять дело доходит до LoadMaps (re-enter). В рез-те ссылка dst оказывается битой, но каким-то чудесным образом push_back не крашит, а гадит намного позже

Ну это повезло, по-хорошему нужны тулзы

Думаю, если соберете с санитайзером (-fsanitize=address) то помощи будет больше.
"Пробывал", с тем же эффектом

В целом, макось вроде бы делает memory overcommitment, поэтому bad_alloc вы не получите, а получите краш при использовании памяти, но вряд ли тут она закончилась
Ну тут хоть бы что-то получить чтобы зацепиться
63  Компиляторы и платформы / Mac OS X / Re: Xcode Guard Malloc : Октябрь 02, 2021, 10:07
Так вопрос остался открытым. Указатель source указывает на достаточное количество байт, чтобы хранить весь этот текст и нулевой символ в конце?
Да, это видно из дампа и переменных отладки

И занулен ли последний символ принудительно?
Ну как "принудительно". Конечно кто-то этот ноль писал, но точно не я  Улыбающийся У меня и возможности такой не было, весь код выше - либы Qt

Адрес вылета (0x600096c32000) какой-то "слишком круглый", но правильный (0x0000600096c31f08 + 0xf8). Ну и смущает что до загрузки файла (где летит) еще очень далеко. Понятно что и такое "возможно", но все же..

Попробовал с др проектом, вылета нет, только вякает
Цитировать
GuardMalloc[MyApp-2259]: Allocations will be placed on 16 byte boundaries.
GuardMalloc[MyApp-2259]:  - Some buffer overruns may not be noticed.
GuardMalloc[MyApp-2259]:  - Applications using vector instructions (e.g., SSE) should work.
GuardMalloc[MyApp-2259]: version 109
GuardMalloc[MyApp-2259]: Attempting excessively large memory allocation:  134217732 bytes
GuardMalloc[MyApp-2259]: If you really wanted to allocate so much memory, launch your executable with the environment variable MALLOC_PERMIT_INSANE_REQUESTS set to any value to circumvent this check.
GuardMalloc[MyApp-2259]: Explicitly trapping into debugger!!!
Блок 128 метров - это кошкины слезы, чего ото понты колотить ?
64  Компиляторы и платформы / Mac OS X / Re: Xcode Guard Malloc : Октябрь 01, 2021, 16:04
Ну ладно, давайте "со всеми остановками". Вот собсно сам вылет с которого все началось

Цитировать
static inline void qt_mac_waitForMoreEvents(NSString *runLoopMode = NSDefaultRunLoopMode)
{
    // If no event exist in the cocoa event que, wait (and free up cpu time) until
    // at least one event occur. Setting 'dequeuing' to 'no' in the following call
    // causes it to hang under certain circumstances (QTBUG-28283), so we tell it
    // to dequeue instead, just to repost the event again:
    NSEvent* event = [NSApp nextEventMatchingMask:NSEventMaskAny   // Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
        untilDate:[NSDate distantFuture]
        inMode:runLoopMode
        dequeue:YES];
    if (event)
        [NSApp postEvent:event atStart:YES];
}

// Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
Приложение запускается и работает, летит при загрузке большого файла данных (сегодня утром осчастливили)

Ладно, пробую Guard Malloc, теперь летит уже на инициализации приложения
Цитировать
inline uint qstrlen(const char *str)
{ return str ? uint(strlen(str)) : 0; }

Thread 1: EXC_BAD_ACCESS (code=1, address=0x600096c32000)
А вот место откуда зовется qstrlen
Цитировать
       // Append rest of shader code
        sourceChunks.append(source + versionDirectivePosition.position);
        sourceChunkLengths.append(GLint(qstrlen(source + versionDirectivePosition.position)));

// scurce = 0x0000600096c31f08
// versionDirectivePosition.position = 248
Вот дамп строки source, да, она заканчивается нулем
Цитировать
23 76 65 72 73 69 6F 6E 20 33 33 30 0D 0D 69 6E 20 76 65 63 33 20 74 65 78 43 6F 6F 72 64 30 5F 76 73 68 3B 0D 0D 75 6E 69 66 6F 72 6D 20 73 61 6D 70 6C 65 72 32 44 20 74 65 78 74 75 72 65 30 3B 0D 0D 6F 75 74 20 76 65 63 34 20 67 6C 46 72 61 67 43 6F 6C 6F 72 3B 0D 0D 76 6F 69 64 20 6D 61 69 6E 20 28 76 6F 69 64 29 0D 7B 0D 09 67 6C 46 72 61 67 43 6F 6C 6F 72 20 3D 20 74 65 78 74 75 72 65 28 74 65 78 74 75 72 65 30 2C 20 74 65 78 43 6F 6F 72 64 30 5F 76 73 68 2E 78 79 29 3B 0D 2F 2F 09 76 65 63 34 20 74 78 20 3D 20 74 65 78 74 75 72 65 28 74 65 78 74 75 72 65 30 2C 20 74 65 78 43 6F 6F 72 64 30 5F 76 73 68 2E 78 79 29 3B 0D 2F 2F 09 67 6C 46 72 61 67 43 6F 6C 6F 72 20 3D 20 76 65 63 34 28 74 78 2E 78 79 7A 2C 20 31 29 3B 0D 7D 0D 00
И вот сама строка source
Цитировать
#version 330

in vec3 texCoord0_vsh;

uniform sampler2D texture0;

out vec4 glFragColor;

void main (void)
{
   glFragColor = texture(texture0, texCoord0_vsh.xy);
//   vec4 tx = texture(texture0, texCoord0_vsh.xy);
//   glFragColor = vec4(tx.xyz, 1);
}

И шо? Впечатление что типовая хренотень с тулзами диагностики - ему "все не нравится"
65  Компиляторы и платформы / Mac OS X / Xcode Guard Malloc : Октябрь 01, 2021, 10:24
Добрый день

Падает в главном событийном цикле. Нужно проверять кучу, включил Guard Malloc (Edit Schene > Options). Он ловит exception на совершенно безобидной ф-ции qstrlen. Как это понимать? Адрес подаваемый в ф-цию нормальный, отладчик показывает строку по этому адресу, она как и должна быть. Пробовал др опции диагностики памяти, краш тот же, ничего не находят

Спасибо
66  Программирование / Алгоритмы / Re: Изменить значение кривой : Октябрь 01, 2021, 08:16
Странно, что Вы не можете найти дырки и сгладить этот выброс на графике.
Откуда такое примитивное (мягко говоря) понимание роли форума? Спрашивает - значит не знает, хочет что-то получить (на халяву), чтобы за него сделали его работу Улыбающийся И вот такому, по-дружески тыкая, можно (и нужно) процитировать букварь, добавив поучений типа "учи матчасть!". Вот это "хароший", "живой" форум!

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

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

А я так, форум поднять в поиске немного, а то совсем молчание.
Понимаю, но как темы, так и ответы должны быть "настоящими", а не так, "абы апнуть"
67  Программирование / Алгоритмы / Re: Изменить значение кривой : Сентябрь 27, 2021, 16:24
Туча вроде методов: интерполяционный полином Лагранжа, сплайны...
Сегодня Вы ответили на неск моих тем, но везде одно и то же
Цитировать
Потолковать о всем слегка..
(как говорил поэт Улыбающийся)
Что Ланранж (идею смутно помню)? Что сплайны (приходилось работать)? Вы знаете что есть такое? Я тоже Улыбающийся И что с того? Да ничего, дальше названий дело не идет. Это не наводка, а "стрельба по площадям"

Справедливости ради - не худший вариант. Напр фаны OpenGL - ход мысли примерно
Цитировать
Ага, давеча книгу какую-то листал, там много про матрицы. И этот чувак чета про матрицы. Ну значит оно! Вот и пусть разбирается, это ж ему надо, не мне
Ну и сует эту книгу + кучу понтов ("открой книгу!", "дать человеку удочку" и.т.п)
68  Qt / Вопросы новичков / Re: Проблема с получением данных с помощью QSerialPort::waitForReadyRead() : Сентябрь 26, 2021, 07:13
Вы нарисовали асинхронную схему обработки ответа. В этой схеме для решения задачи TC нужно связать запрос и ответ, замкнуть транзакцию с помощью какого-нибудь идентификатора.
В случае, когда шина используется монопольно, это сделать просто - добавить, например, член Foo::idRequest. Соответственно, идентификатор генерируется перед передачей запроса и в doSomething определяется, на какой запрос пришел ответ.
Да, та же песня возникает и в др задачах, напр при обмене командами плагин-хост. Однако это уже вопрос управления/диспетчеризации пакетов, а ТС спрашивал всего лишь как получить пакет Улыбающийся

Конечно асинхронка  более привлекательна, но и синхронный прием (в своей нитке) - абсолютно законный и корректный способ работы. Да и вообще как-то несолидно, "тут не выходит - ну давайте попробуем так" Улыбающийся
69  Qt / Вопросы новичков / Re: Проблема с получением данных с помощью QSerialPort::waitForReadyRead() : Сентябрь 25, 2021, 12:55
Так вот столкнулся с проблемой,что, послав запрос на пакет данных, waitForReadyRead() сообщает,что есть данные, но с помощью readAll() считывается только часть пришедшего пакета, а потом хоть ..
А Вы рассчитывали что придет весь пакет, потому что "времени дали достаточно"? На это полагаться не стоит, ну хотя бы потому что может прийти и кусок следующего или вообще 100 пакетов.

Когда же я повторно запрашиваю данные, то пара waitForReadyRead()  - readAll() выдает мне вместе вторую часть непришедшего вовремя пакета и часть следующего пакета.
Нет никакого "вовремя", когда придет - тогда и придет. И сколько придет - хз. Если хотите синхронку нужно буферировать самому и повторять "пару" до тех пор пока пакет не будет полностью вычитан. Начинать с проверки что пакет уже в Вашем буфере.

Qt задекларировала функцию waitForReadyRead(), и она должна работать нормально, а не через пень колоду.
Ну так обращайтесь к Qt Улыбающийся И еще есть народная примета: если человек не поздоровался создавая тему - отвечать ему не стоит. Ладно, нарушим правило и посмотрим  Улыбающийся
70  Программирование / Алгоритмы / Re: Изменить значение кривой : Сентябрь 24, 2021, 11:10
Для начала сделал линейно (аттач). Пожуем проблемку

Пусть график соответствует положению ноги модели человека, горизонтальный участок - нога стоит неподвижно. Эта аналогия очень корява и абсолютно некорректна, но в прынцыпе - верно. Хорошо, вот просто влепили новое значение - и все. В рез-те на кадре N нога как-то поднялась, а на кадре N + 1 вернулась обратно. Такой "рывок" никого не устроит.  Ладно, вариант аттача. Нога встала, потом как-то поднялась и опустилась (более или менее плавно, задается). Это чуть лучше, но все равно хреново - а чего она вообще подымалась?

Итого: хотелось бы так адаптировать соседей так чтобы кривая "сохраняла форму", конечно насколько это возможно. Напр для данного случая справа ничего не делать, а слева изменить "спад". Тогда нога просто "опустилась позже", движение сохраняет логику. Да, но это всего лишь один конкретный случай.

Ну или чисто шкурный подход - искать "готовые проверенные". Тогда за что/как зацепиться? Т.е. какие ключевые слова поиска? Прошу блеснуть техникой гугления Улыбающийся
71  Qt / Вопросы новичков / Re: QIntValidator : Сентябрь 24, 2021, 08:46
..препод запретил его (=
И правильно сделал, вникайте, нефиг сачковать
72  Разное / Говорилка / Re: Изучение английского языка в школе : Сентябрь 23, 2021, 13:14
Microsoft давно пишет документацию на родном языке, на остальные машинный перевод.
Нашли авторитет Улыбающийся Кстати дока у него "вполне", не хуже других

Частенько люди отпихиваются типа
Цитировать
Ты какой язык в школе учил? ... Воот, английский. А я - немецкий!
Причем как-то "с радостью", мол, все должны понимать что с него взятки-гладки. Хотя всем до фени что он там учил. К слову немецкий лично мне кажется гораздо более красивым и логичным.

Да и вообще, чего вспоминать о далекой школе и обвинять в своем незнании учителей? Надо - значит надо, взял - и сам выучил. Так-то оно так, но призадумался о всяких вещах, напр

- почему трата таких ресурсов (сотни и сотни часов обучения) оказалась поразительно неэффективной ? Не вернуть конечно, но все равно жалко

- "плохой учитель" - да, я и сейчас так считаю, но "поймать его за руку" невозможно. Что ему предъявить? Заставлял учить слова? Так это правильно, без достаточного словарного запаса никакая грамматика не поможет

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

В общем, в голову лезут глупые мысли  Улыбающийся
73  Программирование / С/C++ / Re: Вложенные циклы : Сентябрь 22, 2021, 15:25
Вместо qDebug делай шо хош. Значения i,j,k,l как в четверном цикле.
Та ну нафиг такое "кодирование". Еще и пишете без пробелов  Плачущий

По непрямоугольному массиву..
Не знаю такого "непрямоугольного"  Непонимающий
74  Программирование / Алгоритмы / Изменить значение кривой : Сентябрь 22, 2021, 12:38
Добрый день

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

Спасибо
75  Программирование / С/C++ / Re: Вложенные циклы : Сентябрь 22, 2021, 12:21
Несерьезно
Страниц: 1 ... 3 4 [5] 6 7 ... 761

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