TGB (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: Пред. 1 ... 3 4 5 6 7 8 9 10 11 12 13 След.
Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
 
Цитата
TGB написал:
Вопросы к поддержке QUIK:.    У вас "новичок" является внештатным сотрудником ARQU?    А если это не так, то зачем вы тут (на форумах ARQU) его держите?
Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
 
Цитата
новичок написал:
ты не утомился бред нести?

     К "новичку" вопросов и возражений нет. Это явление природы. Но, природа, к сожалению, часто ошибается.

Вопросы к поддержке QUIK:

1.    У вас "новичок" является внештатным сотрудником ARQU?

2.    А если это не так, то зачем вы тут (на форумах ARQU) его держите?

Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
 
Цитата
TGB написал:
тест управления автоматической памятью QLua диагностирует утечку памяти и некорректность ее функционирования
 Наверное, стоит пояснить, что означает приведенная выше цитата.

1.    Это общая проблема для всех тех, кто использует скрипты QLua (возможно??, за исключением тех, кто вообще не использует служебные функции QLua).

2.    Это порождает «плавающие», случайно возникающие ошибки в QLua-скриптах.

Представьте, что вы купили ПК, в котором часто сбоит RAM (память). Это значит, что любые ваши программы могут «падать» в любом месте, в любое время и можно искать в них свои ошибки до «посинения». При этом, при работе на бирже, вы не можете отойти от ПК ни на минуту, так как ваша «автоматизация» может «упасть» в любой момент времени, возможно, с неприятными для вас последствиями.

P.S.
Версиях QUIK < 8.5 мой тест управления автоматической памятью QLua ошибок не обнаруживает.
Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
 
Цитата
Появился QUIK 8.9.0.107.   https://arqatech.com/ru/support/files/quik-workstation/ Мой тест управления автоматической памятью QLua диагностирует утечку памяти и некорректность ее функционирования.    Жду следующую версию.

------------------------------------------------------------------------------------

Письмо, посланное мною в поддержку QUIK 05.10.20.

   Новая версия (от 05.10.20 ) QUIK 8.9.0.107 продолжает «падать» ( CQ02750791, CQ02779753, CQ02787899. CQ02802279) (CQ02809006)

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

---------

Ответ поддержки.

Добрый день.
   
    Проблемой занимаемся, если будут дополнительно вопросы, то мы     сообщим.
    Извиняемся за долгий разбор, постараемся ответить, как можно скорее.

Функции onInit, onStop, onClose
 
Цитата
TGB написал:
Какуя версию QUIK Вы используете?  Если >= 8.5, то можете посмотреть мой комментари
Странно, конечно, не все ситуации в QUIK возникают из-за сбоев управления автоматической памятью QLua 5.3.5, однако, меня поражает, что многие, похоже, не понимают, что, если сбоит память QLua 5.3.3, то можно ожидать всего что угодно, в любых своих программах.
Функции onInit, onStop, onClose
 
Цитата
Anton написал:
Все же small это не более чем функция, выполняется в том потоке, в котором вызвана, в данном случае в потоке мейна.
  Я до сего момента не использовал таблицы QUIK и потому проверил то, что описывает Anton.  Похоже, он описывает то, что есть. То есть, некорректное  завершение скриптов по событию OnStop. Действительно, поддержка (обслуживание) таблиц QUIK выполняется в том же (основном потоке), что и обработка колбеков (по моему мнению плохое решение). Поэтому (как написал Anton), если нажатие кнопки "Остановить" произошло в тот момент, когда не завершилась отработка (в основном потоке) SetCell(...) , то возникает ситуация, которую Вы наблюдаете. Это относится и к версиям QUIK < 8.5. Наверное, стоит "выкатить", обнаруженное Вами, поддержке QUIK. Фиксацию ваших результатов, имеет смысл, перенести в OnStop до строки: f=false
Функции onInit, onStop, onClose
 
Цитата
Владимир написал:
Запустил через час - опять теряет управление. ВААПЩе НИЧЕГО НЕ ДЕЛАЛ СО СКРИПТОМ!    
  Какуя версию QUIK Вы используете?  Если >= 8.5, то можете посмотреть мой комментарий https://forum.quik.ru/messages/forum10/message48194/topic5527/#message48194 . Этот комментарий относится и к QUIK 8.9, который "падает" на моей тестовой программе автоматической памяти QLua (отосланной поддержке QUIK 15.08.20) в разные моменты, но в интервале пяти минут. В версиях QUIK < 8.5 эта тестовая программа без проблем работает неделями.
Функции onInit, onStop, onClose
 
Цитата
Владимир написал:
Что делать?
Здравствуйте!

В OnStop() добавьте  return <Интервал в млсек.>.

Смотрите комментарии ниже.

-------

function OnStop()
  ----------- Завершает цикл в функции main()   -----------
    IsRun = false;
    message(" Завершение работы моего интерфейса ===== ",1)
   return 10000   --  !!  По истечении этого интервала времени (в млсек.), данного скрипту на завершение работы, функция main() завершается принудительно.
                            -- При этом возможна потеря системных ресурсов.   ! Если функция не выдает значение, то по умолчанию оно 5000 (5 сек.)
end;
Отладка QUIK 8.9
 
Письмо посланное мною в поддержку QUIK:

Новая версия (от 05.10.20 ) QUIK 8.9.0.107 продолжает «падать» ( CQ02750791, CQ02779753, CQ02787899. CQ02802279) (CQ02809006)

Здравствуйте!  Посылаю вам дамп.  С помощью посланной 15.08.20 вам мною моей программы, вы можете получать этих дампов столько, сколько захочете.
Кроме того, наблюдается утечка памяти.
Работа main() при наличии 1 ядра
 
Цитата
Anton написал:
встали на локе, пока второй поток не соизволит вас пустить
  В нативном коде Lua лок пустая операция во всех функциях C-API.
  Откуда известно, что в QLua лок - синхронизирующая операция во всех функциях С-API QLua, порождающая то, что вы описали? Дело в том, что при выполнении функции (в своей отдельной области стека), в которой используются только общие, не изменяемые, глобальные переменные, синхронизация не требуется . Я думаю, что разработчики QUIK это, наверное, понимают и не подавляют параллелизм выполнения таких функций ( а они есть).  
Работа main() при наличии 1 ядра
 
Цитата
Anton написал:
в каждый момент времени с луа работает либо мейн, либо колбек.
    мейн и колбеки работают в разных потоках. Если ЦП имеет оно ядро, то процитированное выше верно, Если ядер несколько, то, может быть ситуация, когда мейн и колбеки работают параллельно.
Вопросы, не требующие ответов
 
Цитата
Anton написал:
Потому что перехватить их все вообще не вопрос
 В дополнение к комментарию, написанного Anton.
  Обработать фатальные исключения так, чтобы можно было продолжить работу скрипта в текущем процессе, в общем то, практически невозможно (на то они и фатальные).
Однако существует хорошо известная схема обработки таких исключений:
  1) выдача кода EXCEPTION_CONTINUE_SEARCH (для SEH - исключений) о последующем продолжении обработки перехваченного исключения, а также сообщения о возникновении такого исключения с выдачей локального дампа скрипта (распечатка состояния информационных структур скрипта после перехвата этого исключения для анализа возможных причин возникшего исключения):
  2)  перезапуск процесса, в котором возникло обсуждаемое фатальное исключение.
 Описанная выше схема, обычно, реализуется с использованием контрольных точек (состояний вычисления: значений внутренних переменных скрипта), зафиксированных, обычно, на энергонезависимых накопителях. Контрольные точки должны обеспечивать (после их считывания) продолжение вычислений в скрипте с последнего зафиксированного,  перед перезапуском его состояния.
Вопросы, не требующие ответов
 
Цитата
nikolz написал:
Что же касается перехвата всех исключений
И где-же в приведенном вами моем тексте, есть что-то написанное про исключение?
Вопросы, не требующие ответов
 
Цитата
Владимир написал:
я бы хотел иметь в виде интерпретатора аналог моего любимого С (или хотя бы JS)
 Я, наверное, Вас обрадую. В QLua (Lua) существует C-API и у Вас есть возможность, практически полностью вести свои разработки на C. Хорошее описание C-API представлено в книге одного из отцов-основоположников языка Lua http://texno.info/wp-content/uploads/2019/09/lua.pdf (можно посмотреть также https://lua.org.ru/contents_ru.html#4.7).  Вы можете создать dll-пакет на C и подключить в своем скрипте. Далее вызываете в скрипте свою функцию пакета, в которой делаете все что Вам нужно (например, запускаете потоки для обработки данных и так далее). Из такого пакета доступен весь интерфейс с QUIK. Есть хороший ресурс https://quikluacsharp.ru/, на котором представлены некоторые шаблоны решений для QLua, в том числе, шаблон создания dll-пакета для QLua.
Вопросы, не требующие ответов
 
1.
Цитата
Владимир написал:
Сам Lua ИДЕОЛОГИЧЕСКИ предназначен именно НЕ для программистов
Вы же пищите на нем?
И, наверное, часть пишущих скрипты на QLua являются профессиональными программистами.

2.
Цитата
TGB написал:
Такая реализация вашего предложения не затрагивает уже существующие скрипты
И пусть те, кто не собирается заниматься перезапусками QUIK  продолжают жить так, как жили до сих пор. Те кто не в теме, скорее всего, не используют даже pcall.

3.
Цитата
Владимир написал:
Именно они и есть место потенциальных и труднонаходимых ошибок
С этим я согласен.

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

5.
Цитата
Владимир написал:
Я вообще не понимаю, как в этом случае получать доступ к данным.
И с этим я тоже согласен.
Вопросы, не требующие ответов
 
Цитата
Anton написал:
пусть рушится, глядишь и дампы какие-то более содержательные будут получаться.
 И все-таки, ваше предложение дать возможность перехватывать все исключения в скрипте, мне представляется хорошим решением.
Оно может быть реализовано, например в следующем виде.
  В интерфейсные функции QUIK  добавляется функция ppcall - полный аналог pcall, но перехватывающий абсолютно все исключения. Туда же добавляется функция перезапуска QUIK с параметром, определяющим подробность распечатки содержательного дампа перед запуском, а так же необходимость самого перезапуска. Перехват всех исключений обеспечит:
  1) удобную локализацию места, возможно порождающего исключение;
  2) возможность анализа состояния скрипта (вывод своего локального дампа) сразу после возникновения исключения.
 Такая реализация вашего предложения не затрагивает уже существующие скрипты, но предоставляет дополнительные возможности тем, кто захочет воспользоваться этими функциями. Эти функции, например, могут быть использованы в скриптах для реализации контрольных точек, обеспечивающих продолжение работы, с прерванного перезапуском места.
 
Вопросы, не требующие ответов
 
Цитата
Anton написал:
У них могут быть какие-то свои дополнительные соображения
Может быть следующее возражение.
  Многие пишущие скрипты не являются профессиональными программистами и если в их скриптах будут перехвачены, но не обработаны фатальные исключения (сигнализирующие о разрушении контекста исполнения процесса QUIK), то последующее поведение QUIK будет неопределенным и это может (потенциально) привести, например, к выдачи искаженной заявки, порождающей клиенту убытки.
  Однако, если реализовать в QUIK дополнительно специальный режим запуска скриптов, в котором используется, предложенная вами схема обработки исключений, то это было бы хорошее решение, обеспечивающее больший контроль в разрабатываемых скриптах для тех, кто понимает как обрабатывать фатальные ошибки (например, перезапуская QUIK). При этом в сервисные функции стоило бы добавить функцию перезапуска QUIK.
Зависание QUIK
 
Цитата
Старатель написал:
Похоже, источник проблемы - функция с переменным числом аргументов.
Здравствуйте.

 Я в соседней ветке обсуждения как-то уже написал https://forum.quik.ru/messages/forum10/message48194/topic5527/#message48194 что, похоже, многие проблемы версий QUIK >= 8.5...  вызваны некорректной реализацией QLua-VM. Ситуации, когда при падении функций, написанных на "чистом" QLua, пользователю не выдаются диагностические сообщения из самого QLua - это ошибки разработчиков языка QLua (отличного от нативного Lua, в части реализации управления памятью). Причем, скорее всего, это ошибки синхронизации при реализации потокобезопасного управления автоматической памятью QLua.  Такого рода ошибки "плавающие" и внешне похожи на сбои аппаратуры. Но могут быть программы, которые создают нагрузку, при которой эти ошибки возникают чаще обычного. Это, наверное, делает и ваш срипт. Я 15.08.20 послал поддержке свою программу, которая "роняет" QUIKи в интервале 5 минут (в разные моменты времени). А до этого отправил кучу дампов. Наверное, имеет смысл и вам туда же отправить ваш скрипт.
Зависание QUIK
 
Цитата
Anton написал:
А и речи не было про параллельно.
Если речь шла об рекурсии, то в обработке Quik-ом колбеков ее тоже нет.
Зависание QUIK
 
Цитата
Anton написал:
смотреть, не получится ли в каком-то из вариантов уровень рекурсии больше единицы.
В QUIK существующая cхема обработки колбеков следующая:
  1.  Существует единственный служебный поток, из которого запускаются потоки скриптов пользователя (main).
  2.  При запуске пользовательских скриптов выполняется регистрация объявленных в них колбеков.
  3.  Колбеки всех запущенных пользователем скриптов обрабатываются в служебном потоке последовательно, так как поток один. Если в нескольких пользовательских скриптах объявлен некоторый колбек (с одинаковым названием), то при возникновении соответствующего ему события, для каждого скрипта в его state запускается свой (объявленный) колбек и выполняется это в служебном потоке последовательно.  Таким образом никакие существующие пользовательские колбеки не могут обрабатываться параллельно.
   С учетом выше изложенного  всегда max_recursion_level = 1 и это подтверждает предложенный вами тестовый скрипт.
Отладка QUIK 8.8
 
1.  
Цитата
Александр написал:
Почему то у меня ни одна программа, написанная на QLua не валится.
Тогда я не понимаю, зачем вам разбираться с чужими черными ящиками?

2.
 
Цитата
Александр написал:
вы просто сами себе выстрелили в ногу
Если вы сходили по ссылке https://forum.quik.ru/messages/forum10/message47772/topic5119/#message47772, то смогли, наверное, прочитать:
 TGB написал:
"Эта же программа (с dll оттранслированными для Lua 5.1) непрерывно (месяцами) без проблем работает во всех версиях QUIK < 8.5."

Цитата
Александр написал:
напишите простой тестовый пример с исходниками
Почему простой тест не получится объясняется в тексте также по приведенной выше ссылке.

3.
Цитата
Александр написал:
обвиняете разработчиков
 По ссылке https://forum.quik.ru/messages/forum10/message48046/topic5119/#message48046 вы можете прочитать, что пишет по этому поводу поддержка QUIK.
    Приведу  от туда лишь короткую цитату:
"По указанным номерам зафиксированных нами и указанных Вами инцидентов (CQ02750791, CQ02779753, CQ02787899. CQ02802279, CQ02809006) мы ведём активную работу и на момент данного ответа, вопрос о причинах утечки памяти и падения рабочего места остаётся открытым."

4,   А это с данной ветки обсуждения:
   
Alexey Ivannikov написал:

12.08.2020 18:42:22
Цитата
Юрий написал:
Ставим новые рекорды потребления памяти.
Уважаемая техподдержка, порадуйте чем-нибудь, я же вам все данные передал что вы просили.
Добрый день.

Мы разбираемся с проблемой. Как будут результаты - незамедлительно Вас известим.

5.
Цитата
Александр написал:
TGB ,Вам же ничто не мешает самостоятельно управлять сборкой мусора.
  Проблема не с запусом мусорщика.  
Отладка QUIK 8.8
 
Цитата
Александр написал:
Вероятно вам нужно упростить скрипт и выложить простой тестовый пример, избавившись от лишнего.Тогда станет более понятно.
Ответ можно посмотреть по ссылке https://forum.quik.ru/messages/forum10/message47772/topic5119/#message47772

Цитата
Nikolay написал:
А Ваше решение только под qlua?
 Да.  Нативный Lua однопоточный. QLua многопоточный. Так же можете посмотреть пояснения по выше приведенной ссылке.
luasql (проблема с cursor:fetch)
 
  По ссылке https://cloud.mail.ru/public/ts3g/4PJofyayZ сейчас находятся релизные dll для sqlite 5.3
Отладка QUIK 8.8
 
https://cloud.mail.ru/public/5iZb/2NSAPmJem  - ссылка на мою тестовую программу (с кодами и инструкцией по ее запуску). Старая ссылка удалена.
 При запуске этой программы дампы возникают быстро (у меня в течении 5 минут), но в произвольные моменты. Эта же программа (с dll оттранслированными для Lua 5.1) непрерывно (месяцами) без проблем работает во всех версиях QUIK < 8.5.
  Одна из функций данной программы, которая включена сейчас по умолчанию, это тестирование автоматического управления
памятью в QLua.
 Особенностью теста является высокая нагрузка (1500 обращений в секунду) на управление автоматической памятью QLua в условиях многопоточности.
 Можете также посмотреть обсуждение по ссылке https://forum.quik.ru/forum10/topic5119/?PAGEN_1=3 , начиная с комментария № 145.
luasql (проблема с cursor:fetch)
 
Цитата
Anton написал:
Надо собирать в релизной конфигурации, если хотите, чтобы у кого-нибудь кроме вас тоже работало.
Замечание правильное. Спасибо.
luasql (проблема с cursor:fetch)
 
Цитата
Евгений написал:
Нужно ли что-то установить помимо самого квика?  
3. Для того чтобы нормально работали пакеты dll, в W10(64р), в папке C:\Windows\System32 и
в C:\Windows\SysWOW64 должны быть (в каждой из них) файлы:
msvcp140d.dll
msvcr120d.dll
ucrtbased.dll
vcruntime140d.dll
Иначе QLua может выдавать сообщение: Не существует модуль…….
Данные файлы могут быть восстановлены из архива Sys_dll_acad93f088cb2265dbf134f27e48aae058671f2f.zip скачанного
по ссылке https://cloud.mail.ru/public/489u/4PD8JcfKd

luasql (проблема с cursor:fetch)
 
Цитата
Евгений написал:
Не найден указанный модуль.Файл по указному в ошибке пути есть, что я делаю не правильно?
Здравствуйте.

Я у себя проверил в QUIKе 8.8.4.3
---
local sqlite3 = require("lsqlite3")  ------  Подключение пакета работы с sqlite3  -----
  env_Parm = sqlite3.open ("C:\\OS_Quesha 8 Lua5.3\\Sqlite\\History1M.db")
  env_Parm: close ()
  message("env_Parm: close ()")
---
Пакет подключился нормально.
-----------------
1. Файлы: lsqlite3.dll и sqlite3.dll нужно пересылать в папку, в которой находится  info.exe.
2  Возможно, после скачивания файлов, вы не разблокировали файлы dll. Исполняемые файлы после скачивания часто блокируются системой.
Разблокировку файла можно выполнить, зайдя в свойства файла (у заблокированных файлов есть соответствующий флажок).
Quik 8.6 Critical error ACCESS_VIOLATION
 

Андрей написал:
Воспроизводится в 8.5.2 и 8.6. До версии 8.5 данной проблемы не было.

----

Андрей написал:
тоже падает (Critical error ACCESS_VIOLATION).  

----

Евгений Петров написал:
на версии 8.6.097, проблема с general protection fault с версии 8.5 никуда не исчезла! Продолжает валиться квик на рабочих lua скриптах с версии 7.27.1. Произвольно, иногда при запуске сразу, иногда через небольшое время.

--------------------------------------
    Не буду утверждать стопудово, но многие ситуации в версиях QUIK >= 8.5, скорее всего, связаны с тем, что в этих версиях возникают ошибки реализации АРКОй QLua-машины 5.3.5 (отличной от нативной Lua-машины 5.3.5). Это отличие связано с тем, что QLua-машина 5.3.5 должна быть потокобезопасной, по сравнению с однопоточной Lua-машиной 5.3.5 (о причинах этого можно почитать мой комментарий № 142 по ссылке: https://forum.quik.ru/forum10/topic5119/?PAGEN_1=3).
   Более определенно, могу утверждать, что мой тест (многопоточный) автоматического управления памятью QLua-машины 5.3.5, для всех существующих (на дату 07.09.20) версий QUIK >= 8.5 диагностирует, в интервале 5 минут (в произвольные моменты), ее сбои (похоже, вызванные ошибками в синхронизации) и утечку памяти. Поддержке QUIK мною, начиная с 25.05.20, выслано более 40 дампов, а 15.08.20 выслан и сам тест для возможности оперативной отладки разработчиками новых версий QUIK. Для версий QUIK < 8.5 этот тест, ошибок не обнаруживает.
   Представьте себе, что на вашем ПК очень часто сбоит RAM (память). При этом любые ваши программы могут падать в любом месте, и можно искать в них свои ошибки до «посинения» (сам я этим не занимаюсь, до тех пор, пока не будут устранены сбои автоматического управления памятью QLua-машины 5.3.5).

luasql (проблема с cursor:fetch)
 
 Скомпилированные sqlite для 5.3 (64р.): https://cloud.mail.ru/public/ts3g/4PJofyayZ
Функция возвращает код класса по коду инструмента
 
<code>
function getClassTicker2 (ticker) -- Функция возвращает таблицу кодов классов по тикеру инструмента
 local tbl = {}
 ---  !!! Некоторые тикеры попадают в несколько классов ---
 ----   !!  Таблица securities не  отсортирована по тикерам . Поэтому полный перебор ----
  for i= 0, getNumberOf("securities") - 1 do
   local item = getItem("securities", i)
       if item.code == ticker then
           tbl [#tbl +1]  = item.class_code
       end
 end
 return tbl
end
<code>
Ускорение работы скриптов, предложение по развитию QLUA
 
Цитата
TGB написал:
Ссылка на документацию и коды:  https://quikluacsharp.ru/stati-uchastnikov/operatsionnaya-sistema-razrabotki-mnogopotochnyh-robotov-...
Уточнение: ссылка дана на краткую статью, в комментариях к которой приводятся ссылки на коды, документацию и краткая инструкция по установки и запуску в QUIKе..
Ускорение работы скриптов, предложение по развитию QLUA
 
Цитата
nikolz написал:
Решение - предложение.Решить проблему можно двумя путями
.Вариант1 Реализовать возможность  создание в одном скрипте множество функций mainТ е реализовать механизм запуска нескольких потоков в одном скрипте  
 Существует достаточно общее решение («OS_QUESHA») для реализации взаимодействия функций QLua, запускаемых в нескольких потоках в одном  lua_State. Оно бесплатно для некоммерческого использования и работоспособно в версиях 7... <= QUIK < 8.5.
Ссылка на документацию и коды: https://quikluacsharp.ru/stati-uchastnikov/operatsionnaya-sistema-razrabotki-mnogopotochnyh-robotov-torgovli-tsennymi-bumagami-v-quik-os_quesha/
Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
 
   Здравствуйте,  Andrey Bezrukov

Цитата
TGB написал:
была послана поддержке (15.08.20) моя программа тестирования (со всеми необходимыми инструкциями) автоматической памяти QLua для возможности ее оперативного использования разработчиками для отладки новых версий.
  Вопросов по установке и использование этой программы по почте я не получил. Значит все понятно. В этой программе создается очень большая тестовая нагрузка на управление автоматической памятью QLua и обсуждаемые ситуации возникают (на моем рабочем месте) в интервале 5 минут. Притом, что в QUIK версий < 8.5 эта же программа работает непрерывно месяцами.  Я считаю, что для разработчиков эта программа могла бы быть полезным инструментом для разбора обсуждаемых ситуаций и мне не понятно почему до сих пор разработчики QUIK не используют его.  Зачем ждать от меня новых дампов после публикации очередной версии QUIK, когда можно их получать на текущих дорабатываемых версиях и разбираться оперативно на месте?
  Если есть какие-то вопросы к моей программе я готов к общению, но этих вопросов от разработчиков я по почте не получаю.
Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
 
     В продолжение своего предыдущего комментария.
   На своих проектах я использую следующую инструкцию по работе с пользователями (вдруг кому-то окажется полезной).

Памятка по работе с пользователями на проектах

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

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

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

  2) ключевые пользователи; это следующая, по ценности для проекта, группа пользователей, на работу с которой следует уделять повышенное внимание со стороны поддержки проекта;

  3) пользователи;

  4) боты и хамы; эта группа, кроме того, что засоряет каналы коммуникации, наносит имиджевый урон проекту; поэтому ее следует блокировать.

Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
 
Цитата
Andrey Bezrukov написал:
Правильно понимаем, что Вы уже обратились к нам по почте с данной проблемой, предоставили файл дампа и Вашему обращению был присвоен номер CQ, в рамках которого выполняется разбор?Если так - просьба ожидать резолюции по данному вопросу с нашей сторону в рамках обозначенной переписки по почте.
  Я ожидаю резолюции по данному вопросу с вашей стороны в рамках обозначенной переписки по почте.с 25.05.20.

  Вы правильно понимаете, что первое письмо по ситуации с управлением памятью в Qlua я написал 25.05.20. С тех пор мною написано по данной теме более 22 писем (с отсылкой большого количества возникших дампов). В том числе была послана поддержке (15.08.20) моя программа тестирования (со всеми необходимыми инструкциями) автоматической памяти QLua для возможности ее оперативного использования разработчиками для отладки новых версий.
-------------------------
   Заголовок моего последнего письма вы можете посмотреть в почте по адресу quiksupport@arqatech.com: RE: "Новая версия (от 24.08.20 ) QUIK 8.8.4. 3 продолжает «падать» ( CQ02750791, CQ02779753, CQ02787899. CQ02802279) (CQ02809006)."
-------------------------
  Я считаю, что надо соблюдать определенные профессиональные этические нормы, и не поднимать лишний хайп, мешающий разработчикам, которые и так испытывают большой стресс. Но когда я получаю, после уже посланных мною более 22-х писем, многократную отписку (сильно похожую от робота) типа (текст приводится в том виде, как получен в письме):
------
  Ваше письмо получено, проблема изучается. Постараемся в ближайшее время сообщить о причинах проблемы.
Если после возникновения проблемы Рабочее место QUIK не запускается, или после запуска проблема воспроизводится вновь - в качестве временного решения рекомендуется выполнить следующие действия:

1. В директории, где установлен Quik, удалите все файлы с расширениями *.log и *.dat, кроме файлов:

metastock.dat
alerts.dat
portfolio.dat
scripts.dat
После чего попробуйте запустить Рабочее место QUIK.

2. Проверьте, что Вы используете актуальную версию Рабочего места Quik - она указана вверху окна на синей полосе. У Вашего брокера можно уточнить, номер актуальной версии и/или получить обновление.

Если вышеприведенные рекомендации не помогут, то это означает, что файл с настройками окон поврежден. Перенесите файл настроек окон (по умолчанию это файл info.wnd) в другую директорию и запустите программу. Если у Вас есть ранее сохранённый файл конфигураций окон - можно попробовать загрузить его. Загрузить файлы настроек можно через меню "Настройки/Загрузить настройки из файла". Если Вы не сохраняли такой файл самостоятельно - файл настройки мог быть сохранен автоматически в папке WNDSAV.
---
то считаю, что я имею дело с непрофессионалами и поэтому могу  выдавать комментарии во вне.
   Я допускаю, что в моем тесте могут быть ошибки, но сильно настораживает то, что
Цитата
TGB написал:
OS_Quesha (с dll оттранслированными для Lua 5.1) непрерывно (месяцами) без проблем работает во всех версиях QUIK <  8.5. и не будем забывать, что  начиная с марта 2020г..(уже 6 месяцев) появляются все новые и новые версии QUIK(8.5…, 8.6…, 8.7…, 8.8…), а их стабильности как не было так и нет. При этом, возникло много инцидентов именно с памятью этих версий.
P.S.   OS_Quesha - это моя программа, в которой тестируется автоматическое управление памятью QLua.
Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
 
   Появился QUIK 8.8.4.3   https://arqatech.com/ru/support/files/quik-workstation/
Мой тест управления автоматической памятью QLua диагностирует утечку памяти и некорректность ее функционирования.
   Жду следующую версию.
Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
 
Цитата
Sergey Gorokhov написал:
данное предложение не будет реализовано
Ожидаемо.
Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
 
Мы имеем на на сегодня
Цитата
TGB написал:
начиная с марта 2020г..(уже 6 месяцев) появляются все новые и новые версии QUIK(8.5…, 8.6…, 8.7…, 8.8…), а их стабильности как не было так и нет. При этом, возникло много инцидентов именно с памятью этих версий.
а оказывается это
Цитата
Anton написал:
чисто ваша проблема
?????
Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
 
Цитата
Anton написал:
вы просто рано или поздно ломаете стек и получаете крэш. Именно это и подтверждает ваш тест
что в версиях QUIK >= 8.5... есть проблемы с управлением автоматической памятью QLua.

Вы постоянно забываете, что
Цитата
TGB написал:
При этом всегда помним, что OS_Quesha (с dll оттранслированными для Lua 5.1) непрерывно (месяцами) без проблем работает во всех версиях QUIK <  8.5.
   Если желаете проверить сами выше приведенное утверждение, то могу выложить соответствующие коды для версий 8.4...

   При запуске функций QLua в потоках OS_Quesha, стеки таких функций разворачиваются в отдельных, не пересекающихся между собой областях памяти. Поэтому синхронизации доступа к локальным переменным функций в различных потоках не требуется (единственное что при этом требуется - это потокобезопасность управления памятью QLua). Если по какой-то необходимости в потоках требуется синхронизация для общих модифицируемых переменных, то это делается внутри моей dll-библиотеки.
Цитата
Anton написал:
Это все прекрасно, к стейту-то вы как доступ синхронизируете? Это можно сделать только той же критической секцией, которую внутренне использует квик, как вы до нее добрались?
  Во внутренние структуры квик я напрямую нигде не обращаюсь. Использую исключительно то, что предоставляет QLua и его C-API.
------
  Наконец, еще раз вспомним, что OS_Quesha (с dll оттранслированными для Lua 5.1) непрерывно (месяцами) без проблем работает во всех версиях QUIK <  8.5. и не будем забывать, что  начиная с марта 2020г..(уже 6 месяцев) появляются все новые и новые версии QUIK(8.5…, 8.6…, 8.7…, 8.8…), а их стабильности как не было так и нет. При этом, возникло много инцидентов именно с памятью этих версий.
Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
 
Цитата
Anton написал:
Теперь вопрос, как вы синхронизируете доступ к этому стейту из разных потоков?
  Ответ из документа:
5. Полная инкапсуляция параллелизма функционирования потоков/псевдопотоков в средствах
OS_Quesha, обеспечивающих эффективность (реализована специально разработанная схема
синхронизации), корректность синхронизации и безопасность взаимодействия функций, вы-
полняемых в разных П/П.
В OS_Quesha существуют два вида, параметрически задаваемой в глобальных настойках, син-
хронизации П/П: обычная, с использованием критической секции ОС, и быстрая (специально
разработанная) на "защелках", без переключения потоков в случаях возникновении конфликтов
синхронизации. При необходимости разработчик может использовать все средства синхрониза-
ции явным образом.

 При этом всегда помним, что OS_Quesha (с dll оттранслированными для Lua 5.1) непрерывно (месяцами) без проблем работает во всех
версиях QUIK <  8.5.  
Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
 
Цитата
Anton написал:
Вы работаете с одним lua_State из двух разных потоков, верно я понял?
 Дополнение.
  Кроме запускаемого шаблона-исходника TS_QUIK.lua есть документация OS_Quesha.pdf (в папке C:\OS_Quesha\OS_Quesha_files), из которой можно узнать что-то об архитектуре  OS_Quesha, в том числе о том, что количество потоков, работающих в одном lua_State задается параметрически в описании схемы потоков (с указанием запускаемых в них функций и связями между ними), а также многое другое.  
  Если вы посмотрите документацию, то возможно, найдете ответы на возникающие у вас вопросы.  
Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
 
Цитата
Anton написал:
Вы работаете с одним lua_State из двух разных потоков, верно я понял?
 Уточнение: на самом деле из нескольких потоков. Это тест выполняется в двух.
Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
 
Цитата
Anton написал:
Вы работаете с одним lua_State из двух разных потоков, верно я понял?
  Да.
Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
 
    Извините, упустил:
Цитата
Anton написал:
Попытался найти, где у вас этот тестовый код зарыт, не нашел. В чем смысл такого теста остается неясным.
 Общее описание.
   function OS_Quesha_TS (NC)    - запускается циклически (в отдельном потоке) по таймерным событиям, запрашиваемым в функции set_evnt_lua ({1, CyclichkLine_evnt_TS}) с частотой ~300 гц.  В этой функции запрашиваются строки в цикле (5 раз) и передаются функции  function SendTS_CQ(NC) работающей в другом отдельном потоке и что-то делающей с этими строками (смотрите текст).   Все это происходит в одной lua_State.
   При такой работе достаточно интенсивно ( как минимум 1500 обращений в секунду) нагружается система управления автоматической памятью QLua. И это происходит в разных потоках. Если потокобезопасное управлению автоматической памятью  реализовано корректно, то тест выполняется до тех пор пока запущенный скрипт не будет остановлен. Иначе возникают различные ошибки, не перехватываемые в QLua.
Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
 
Цитата
Anton написал:
Все же речь была о заинтересованных в отладке квика, а не вашей операционной системы. А для этого нужен (насколько возможно примитивный) луа-скрипт, показывающий, что гарбидж коллектор в квике работает некорректно, как вы утверждаете. Из описанного поведения пункт 2 это ТОЧНО дедлок у вас в коде, пункт 1 может быть от чего угодно, как из него следует косяк именно в коллекторе, непонятно. Попытался найти, где у вас этот тестовый код зарыт, не нашел. В чем смысл такого теста остается неясным.
    Тестирование проблем синхронизации задача сложная и это подтверждается тем, что сама АРКИ, похоже, за десятилетия существования не разработала достаточно валидного теста потокобезопасного управления автоматической памятью QLua. Я сделал такой тест давно в виде утилиты в своей системе для себя (и он реализован с существенным использованием среды исполнения моей системы и я, к сожалению, не могу его изобразить в виде простенького скрипта, как предлагаете вы) . В том виде, в котором я его выложил, этот тест запускается по умолчанию и для специалиста, с моей точки зрения, этого достаточно. Я думаю разработчики QUIK смогут в нем разобраться. Если же он вам не понятен, то вы можете попробовать предложить свой простой тест.
  Еще один момент, который я специально отметил:
Цитата
TGB написал:
Эта же программа (с dll оттранслированными для Lua 5.1) непрерывно (месяцами) без проблем работает во всех версиях QUIK < 8.5.
 
Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
 
Цитата
Anton написал:
Кто хочет результата, выкладывает здесь тестовый скрипт, здесь есть достаточно заинтересованные люди, чтобы потратить время, прогнать у себя, подтвердить баг и тем самым сподвигнуть арку на подвиги, либо обнаружить косяк в самом тесте.
Для заинтересованных людей ссылка на коды теста:  https://cloud.mail.ru/public/2Emr/QBCqEvATr
 За найденные баги в тесте буду благодарен.
----------------------------------------  
 Ниже приводится инструкция по запуску теста (непосредственно из письма, посланного в поддержку QUIK).
----

Новая версия (от 06.08.20) QUIK 8.8.1.5 продолжает «падать» (CQ02750791, CQ02779753, CQ02787899). Тестовая программа, вызывающая падение (с инструкцией по установке и ее запуску).

Здравствуйте!

 QUIK 8.8.1.5 «падает» похожим образом, как это было в предыдущих версиях (начиная с 8.5….). Кроме того, в QUIK в мониторе ресурсов, наблюдается утечка памяти.

   Для того, чтобы у вас была оперативная возможность отладки очередной версии, я высылаю не дамп, а мою тестовую программу (с кодами и инструкцией по ее запуску), в которой дампы возникают быстро (у меня в течении 5 минут), но в произвольные моменты. Эта же программа (с dll оттранслированными для Lua 5.1) непрерывно (месяцами) без проблем работает во всех версиях QUIK < 8.5. Одна из функций данной программы, которая включена сейчас по умолчанию, это тестирование автоматического управления памятью в QLua. Особенностью теста является высокая нагрузка (1500 обращений в секунду) на управление автоматической памятью QLua в условиях многопоточности.

   Если потребуется, я пришлю коды этой же тестовой программы (с dll оттранслированными для Lua 5.1), нормально работающей в версиях 8… < 8.5.

------

Инструкция по установке и запуску тестовой программы.

Для установки и запуска программы надо выполнить следующее:

1) распаковать архив OS_Quesha 8_5.zip;

  ! После распаковки исполняемые файлы в папке «… OS_Quesha\packages» и «…OS_Quesha\packages\Файлы папки QUIK» могут оказаться заблокированными;

     их необходимо разблокировать;

     Файлы можно разблокировать в их свойствах.

     Для быстрой разблокировки всех файлов папки:

      - откройте консоль PowerShell (под Админом) и выполните в ней команду get-childitem "полный путь папки" | unblock-file, предварительно заменив содержимое кавычек полным адресом к папке с заблокированными файлами.

2) получившуюся папку OS_Quesha переслать на диск C (в корень);

3) переслать все файлы (их два) из папки C:\OS_Quesha\packages\Файлы папки QUIK в папку хранения info.exe ( на диске установки QUIK);

4) в меню QUIK <Сервисы> ->   <Lua скрипты ...>   добавить скрипт-шаблон "TS_QUIK.lua" из папки C:\OS_Quesha;

5) запустить добавленный скрипт (это можно делать в QUIKе без подключения к серверу);   при этом появится окно диалога OS_Quesha.

-------------------------

При нормальной работе теста в поле Сообщения диалога с интервалом 5 секунд выдаются сообщения:

<@> <Дата | Время> <6.0> Тест управления памятью QLua. Количество синхронизаций = Количество

  Пока значение Количество меняется (с интервалом в 5 секунд) тест выполняется без ошибок.

Ошибки теста проявляются следующим образом:

1)       QUIK  «падает» (иногда очень быстро) с сохранением дампа, а иногда и без сохранения;

2)      Прграмма OS_Quesha зависает и Количество синхронизаций перестает меняется. Тогда про попытке завершения скрипта зависает или падает QUIK.

-----------

  Если скрипт "TS_QUIK.lua" запускать многократно то, в какой-то (произвольный) момент возникает дамп QUIK.   В версиях QUIK < 8.5 дампов не возникает.

     Для завершения работы с OS_Quesha достаточно закрыть окно ее диалога или остановить крипт в меню QUIK.                

------

Внимание!     Для того чтобы нормально работали пакеты dll,   в W10(64р), в папке C:\Windows\System32 и   в C:\Windows\SysWOW64 должны быть (в каждой из них) файлы:   msvcp140d.dll, msvcr120d.dll,   ucrtbased.dll, vcruntime140d.dll

Иначе QLua   может выдавать сообщение: Не существует модуль…….

Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
 
Цитата
Андрей написал:
Может стоит им отправить свой тестовый стенд, быстрее дело пойдет.
Отличное предложение.  Я уже подготовил коды и инструкцию и  предложу это в переписке.с ними.
Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
 
  Есть предложение от
12.08.2020 18:36:39
Цитата
TGB написал:
Я понимаю, что отказаться от перевода QUIK на Lua 5.3… для ARQU практически невозможно, но, если ориентироваться на результат, то имело бы смысл «заморозить» перевод QUIK на Lua 5.3… и перенести накопленные нормально работающие фичи версий >=8.5… (в том числе длину номеров заявок = 19   ) в последнюю версию 8.4…… В противном случае, скорее всего, нас ждет длительное шоу новых версий QUIK.
Хотелось бы увидеть реакцию от поддержки ARQU.
Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
 

  По моему скромному мнению, перевод QUIK на Lua 5.3… является стратегической ошибкой ARQU, если ориентироваться на пользователя, а не на хайп.    

   Во-первых, функционально, с учетом архитектурно тесной интеграции Lua c языком C/C++, это, мягко говоря, сомнительный шаг, так как все, что не реализовано в Lua 5,1,  по сравнению с Lua 5.3 (а это мало кому нужно), можно реализовать в языке C++. В том числе и длину номеров заявок (>= 19).

  Во-второых, при переходе на Lua 5.3 для  пользователя заметно меняется среда разработки в части используемых dll-библиотек. Надо ли это нормальным пользователям?

  Во-третьих, для самих разработчиков QUIK возникает большой геморрой в связи с необходимостью переработки управление автоматической памятью  Lua 5.3…  (оно существенно отличается от того, что было в Lua 5.1) так, чтобы оно было в QLua 5.3... потокобезопасным (задача, конечно, интересная, но нетривиальная задача параллельного программирования, требующая высокой квалификации). Необходимость потокобезопасности управления автоматической памятью QLua обусловлена тем, что все служебные функции обратного вызова QLua запускаются в потоке отличном от пользовательского (с именем main), но в среде (памяти) пользователя.

   Что мы имеем на текущий момент (12.08.20). Пользователи отлаживают, начиная с марта 2020г.все новые и новые версии (8.5…, 8.6…, 8.7…, 8.8…). Прошло уже 5 месяцев как нас кормят обещаниями стабильной новой версии QUIK. При запусках моего теста управления автоматической памятью во всех QLua версиях >= 8.5  в произвольные моменты времени, но в интервале 10 минут,  возникают дампы ( все они пересланы мной в поддержку ARQU). Причем в QUIK версий < 8.5 проблем с управлением автоматической памятью QLua мной не обнаружено.

    Пока в версии >= 8.5 не будет реализовано корректное потокобезопастное управление автоматической памятью версий QLua >= 8.5, QUIK будет нестабильным (надеюсь что разработчики QUIK это понимают).

-------

   Я понимаю, что отказаться от перевода QUIK на Lua 5.3… для ARQU практически невозможно, но, если ориентироваться на результат, то имело бы смысл «заморозить» перевод QUIK на Lua 5.3… и перенести накопленные нормально работающие фичи версий >=8.5… (в том числе длину номеров заявок = 19   ) в последнюю версию 8.4…… В противном случае, скорее всего, нас ждет длительное шоу новых версий QUIK.

Отладка QUIK 8.8
 

   К сожалению, приходится наблюдать, как катастрофически падает профессионализм управленческих кадров в России, определяющих, что надо делать. ARQU вместо того, чтобы устранять ошибки версий 8.4…, улучшать функциональность, надежность и эффективность QUIK (и тут имеется широкие возможности), решила сделать маркетинговый ход и «поразить» пользователей переходом с Lua 5.1 на 5.3. Тут надо понимать, что функционально, с учетом архитектурно тесной интеграции Lua c языком C/C++, это, мягко говоря, сомнительный шаг, так как все, что не реализовано в Lua 5,1,  по сравнению с Lua 5.3 (а это мало кому нужно), можно реализовать в языке C++.

   Кроме того, история с многочисленными проблемами реализации собственного, потокобезопасного управления автоматической памятью QLua 5.1, была, похоже, была проигнорирована. Вместо элементарной реализации в версии 8.4…. произвольной длины номеров заявок (> 19 знаков) был выбран нелегкий путь («нормальные» герои всегда идут в обход).перехода на Lua 5.3… (в котором существенно изменилось управление автоматической памятью и  которое в QLua 5.3…, в отличие от Lua 5.3…, необходимо переработать так, чтобы оно было потокобезопасным). Необходимость потокобезопасности управления автоматической памятью QLua обусловлена тем, что все служебные функции обратного вызова QLua запускаются в потоке отличном от пользовательского (с именем main), но в среде (памяти) пользователя.

  Что мы имеем на текущий момент (12.08.20). Пользователи отлаживают, начиная с марта 2020г.все новые и новые версии (8.5…, 8.6…, 8.7…, 8.8…). Прошло уже 5 месяцев как нас кормят обещаниями стабильной новой версии QUIK. При запусках моего теста управления автоматической памятью во всех QLua версиях >= 8.5  в произвольные моменты времени, но в интервале 10 минут,  возникают дампы ( все они пересланы мной в поддержку ARQU). Причем в QUIK версий < 8.5 проблем с управлением автоматической памятью QLua мной не обнаружено.

 Пока в версии >= 8.5 не будет реализовано корректное (пусть и не самое эффективное) потокобезопастное управление автоматической памятью версий QLua >= 8.5, QUIK будет нестабильным (надеюсь что разработчики QUIK это понимают).

Страницы: Пред. 1 ... 3 4 5 6 7 8 9 10 11 12 13 След.
Наверх