Отладка QUIK 8.13

Страницы: Пред. 1 2 3 4 5 След.
RSS
Отладка QUIK 8.13
 
TGB, Бывают и другие ситуации зависания в QLua, без "длинного цикла пользовательской программы". Я стараюсь в коллбеках ничего не делать, только флаги разные расставлять, а действия выполнять по этим флагам уже в мейне, но разок прокололся: в коллбеке на действия пользователя (кнопки купить/продать в контекстном меню) я посылаю заявки - видимо, за это и был несколько раз наказан падением Квика.

Как это "исключить sleep и файловые операции"? Слип эмулирует прерывания по таймеру, а файловые операции с некоторого времени я стал выполнять именно из коллбека (OnStop) - в противном случае теряется управление, и я остаюсь без дампа текущего состояния моего портфеля - Антон когда-то подробно разбирал эту ситуацию). Вы там поосторожнее с экспериментами! :smile:  
 
Цитата
Владимир написал:
исключить sleep и файловые операции
 Это значит исключить эти операции из возможности помещать их в особый список. А далее смотрите мой текст. Хуже, чем сейчас не будет, если написанное будет реализовано корректно.
 
TGB, А разве что-либо где-либо когда-либо бывало  реализовано корректно?  :smile: Здесь всё-таки операции с деньгами, и мне казалось, что уж здесь-то должна быть высочайшая надёжность. А оказалось, я стал опасаться ЛЮБЫХ изменений. Не бывает таких ситуаций, чтобы нельзя было сделать ещё хуже.
 
На мой взгляд достаточно просто добавить в инструкцию предупреждение, что код, не вызывающий никаких С-функций и не создающий никаких объектов в памяти, не может быть прерван и соответственно может создавать зависания до окончания выполнения.


Предложить пользователям вставить sleep(0) во внешних циклах при отсутствии каких-либо других операций, снимающих лок.
 
Цитата
Артем написал:
На мой взгляд достаточно просто добавить в инструкцию предупреждение, что код, не вызывающий никаких С-функций и не создающий никаких объектов в памяти, не может быть прерван и соответственно может создавать зависания до окончания выполнения. Предложить пользователям вставить sleep(0) во внешних циклах при отсутствии каких-либо других операций, снимающих лок.
   Не согласен. В хорошо реализованных средствах, подробности их реализации от пользователя скрываются. Желательно, чтобы пользователь решал свои задачи, а не занимался устранением недостатков используемых средств. И вообще, инструкции для пользователя чем короче, тем лучше.
 
TGB, такого рода изменения падают скорее в область "защиты от дурака". Что Эйнштейн по этому поводу думал мы все знаем, Мёрфи еще добавил что на защиту от большого дурака попросту находится еще больший дурак, так что ничего свыше санитизации входных данных делать не требуется - особо одарённые всё равно сломают. С учётом того, что такая ситуация возникает в настолько маргинальных сценариях, что само явление обнаружено было только в синтетическом тесте, считаю что делать патчи - тем более хакать сам язык Lua - здесь нецелесообразно. Достаточно просто упомянуть в документации, что голая арифметика и булевая логика вообще безничего в численном цикле может завесить систему. Также смею заметить что обсуждение этого изменения представляет собой байкшеддинг, и вместо лёгких задач надо бы решать важные - то что прерывания иногда разрушают стек и вызывают обрушение скрипта, например.
 
Цитата
Артем написал:
Также смею заметить что обсуждение этого изменения представляет собой байкшеддинг, и вместо лёгких задач надо бы решать важные - то что прерывания иногда разрушают стек и вызывают обрушение скрипта, например.
  Вы до сих пор не поняли, что важная задача решена. Почитайте эту ветку начиная с начала ни чего не пропуская. Возможно у вас что-то проясниться. Если нет, задайте мне вопрос и я вам разъясню.
 
TGB, О! Подробности реализации от пользователя скрываются! Нет ничего страшнее придурка с пулемётом. Лопату ему в зубы, и пусть копает! А инструкции давать чистыми, без единого символа! Это и есть наилучшая "защита от дурака". :smile:  
 
TGB, судя по всему не было.

https://forum.quik.ru/messages/forum10/message54811/topic5823/#message54811
 
Цитата
Артем написал:
TGB , судя по всему не было. https://forum.quik.ru/messages/forum10/message54811/topic5823/#message54811
 В той ссылки, которую вы указали используется QUIK v.8.13.0.106, Lua 5.4.  Ошибка синхронизации, устранена в версии QUIK v.8.13.1.16 (смотрите файловый архив на сайте разработчика). Надо обращать внимание на номер версии. Наверное, не все ситуации, которые возникают в QUIK 8.5. возникают, например в QUIK v.8.13.0.106
 
TGB, прочитал логи изменений на обоих языках, ничего про такого рода ошибки не увидел.
 
Цитата
Артем написал:
TGB , прочитал логи изменений на обоих языках, ничего про такого рода ошибки не увидел.
  Вы верите всему, что читаете? :smile:
 
TGB, между официальной документацией и "мне так кажется" от рандома в интернете, выбор несложный.
 
Цитата
Артем написал:
TGB , между официальной документацией и "мне так кажется" от рандома в интернете, выбор несложный.
  Вам жить проще  :smile: . Вы знаете, я обычно, не выбираю между официальной документацией и "рандомом в интернете, а учитываю то и другое и мои выводы не всегда совпадают с тем или другим.
 
Цитата
Roman Azarov написал:
 Во избежание взаимного недопонимания, просим собрать оба предложения, на которые Вы ссылаетесь, в одно, максимально емко описывающее суть пожеланий, обращение, здесь или же нам на почту
Цитата
Roman Azarov написал:
Мы обязательно примем данное обращение в работу и постараемся представить итоги его анализа.Заранее благодарим.

  Здравствуйте!
В комментарии 50 собраны оба предложения. Просьба их рассмотреть.
Если у вас будут вопросы, то постараюсь на них ответить.
 
TGB, Если бы у вас были весомые аргументы, то был бы другой разговор. Но у вас аргумент уровня "works on my machine", причём только для версии 8.13.0 а не 8.13.1, и поверх этого ваш код тестирует совершенно другой вид ошибки. Хэт-трик просто.
 
Артем, Сударь, Вы решительно надоели своей назойливой тупостью. С Вами разговаривать не о чем, Ваша "квалификация" многократно подтверждена здесь Вами же. Так что НЕ ВАМ определять "весомость аргументов"! Нижайшая просьба: заткнитесь по-хорошему, а? :wink:  
 
Цитата
Артем написал:
Если бы у вас были весомые аргументы, то был бы другой разговор.
 Все-таки, вы, неугомонные  :smile: . Что вас «гложет» так, что вы снова и снова жаждете продолжения  шоу, которое мы с вами устроили здесь и которое, наверное, поднадоело всем, в том числе, и мне? Вы, наверное, могли бы, вместо чтения  и писания в «рандомной» ветке, почитать официальную информацию, которой вы так доверяете (например, инструкции пользователя) на сайте производителя  :smile: . А если вы их уже изучили, то почитать какие-нибудь официальные, полезные для вас, книги по IT. Но вы же читаете и пишите в этой ветке. Какие-то вы уж очень противоречивые  :smile: .
 
TGB, изестный интернетный феномен - когда кто-то несет чушь, люди хотят такое недоразумение исправить. Когда предъявляют исходники или дизассемблер или хотя бы логически жёсткую цепочку, тогда есть разговор. Когда говорят "ну у меня вот в моем игрушечном стенде все работает" и удобно игнорируют то что у других людей проблемы никуда не делись - это чушь. Впрочем вы товарищ скатываетесь в такой же уровень самоуверенной шизофазии как Владимир так что вас тоже скоро буду игнорировать наотрез. Если вдруг забыли, напоминаю что по вашему-же умозаключению мои навыки и/или познания гораздо превосходят ваши.
 
Цитата
Владимир написал:
Вы решительно надоели своей назойливой тупостью. С Вами разговаривать не о чем, Ваша "квалификация" многократно подтверждена здесь Вами же.
Кто бы говорил.
Есличё, в этом споре я ни за кого. Но афтару этих слов хочется ответить этими же словами в каждой ветке форума :lol:
 
Цитата
Артем написал:
Если вдруг забыли, напоминаю что по вашему-же умозаключению мои навыки и/или познания гораздо превосходят ваши.
  Вы что, шуток не понимаете?  :smile:
 
Артем, Лапуль, я про то и говорю: ДАВНО ПОРА нас "игнорировать наотрез". Тем более, что и у него, и у меня всё давно работает, а вечный скулёж "гуру" о проблемах именно ВЕЧНЫЙ.

Незнайка, Я бы говорил! А спора здесь никакого нет и не было.
 
TGB, Какие шутки с такими комплексами? Вот, например:

Легко наверное жить когда уровень ЧСВ еще выше чем уровень IQ. Когда нейронный робот запустится, я с вами поделюсь данными о монетарной производительности.
 
Цитата
Roman Azarov написал:
Во избежание взаимного недопонимания, просим собрать оба предложения, на которые Вы ссылаетесь, в одно, максимально емко описывающее суть пожеланий, обращение, здесь или же нам на почту ( quiksupport@arqatech.com ).
Цитата
Roman Azarov написал:
Мы обязательно примем данное обращение в работу и постараемся представить итоги его анализа.Заранее благодарим.
 Оба предложения собраны в одно (смотрите комментарий № 50). Просьба сообщить, принято ли данное обращение в работу, а также приблизительные сроки ответа.
 
TGB, добрый день!

Оба пожелания зарегистрированы, мы постараемся их рассмотреть. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожеланий в будущих версиях ПО.
Каких-либо сроков назвать не можем. Как будет результат анализа пожеланий, мы сообщим Вам в данной теме.
 
Цитата
Roman Azarov написал:
Как будет результат анализа пожеланий, мы сообщим Вам в данной теме.
  Спасибо за ответ. Наверное, результат анализа будет интересен многим, читающим эту тему.
 
Цитата
TGB написал:
Идея оптимизации состоит в том, чтобы у пользователя была динамическая возможность задания/отмены C-функций, которые вызываются без выше описанной синхронизации (ввести особый список).
Roman Azarov, если будете это реализовывать, то предлагаю сделать возможным задавать не только отдельно функции, но и библиотеку целиком, например math.

3) Предложение3. Дать скриптеру возможность самостоятельно устанавливать/снимать блокировку в любом месте пользовательского кода, если такое возможно.
Надо делать так, как надо. А как не надо - делать не надо.
 
Здравствуйте Старатель!

Цитата
Старатель написал:
Roman Azarov , если будете это реализовывать, то предлагаю сделать возможным задавать не только отдельно функции, но и библиотеку целиком, например math.
 Наверное, это было бы пользователям удобно, если будет реализован эффективный анализ особого списка функций.

Цитата
Старатель написал:
Предложение3. Дать скриптеру возможность самостоятельно устанавливать/снимать блокировку в любом месте пользовательского кода
Мне кажется, это может порождать ошибки в скриптах пользователей, не являющихся профессиональными программистами.
 
Старатель, локи снимаются автоматически при вызове любой С-функции а также при выделении памяти.

* любая функция QUIK
* любая функция Lua (все библиотечные функции + pairs, next, getmetatable и т.п.)
* любая функция из внешней DLL
* любая операция со строковым результатом
* любая операция по созданию новых объектов
 
TGB,
Цитата
Мне кажется, это может порождать ошибки в скриптах пользователей, не являющихся профессиональными программистами.
По сравнению с динамической типизацией это даже упоминать не стоит - во где кладезь потенциальных ошибок! А вообще, конечно: базовый интерфейс неплохо бы резко упростить. Ну зачем рядовому юзеру знать, например, о существовании sendTransaction? Не говоря уже о том, что обеспечивать уникальность их айдишек он должен сам - во радость! А набивать значениями таблицы с фиксированными именами полей - это как? Ну и количество доступных функций (в особенности коллбеков) сократить в разы. Эх, мечты, мечты...  :smile:  
 
Цитата
Владимир написал:
базовый интерфейс неплохо бы резко упростить
  Согласен.  Интерфейс должен быть полным, обеспечивающим все необходимые операции пользователя, но максимально простым и ясным. Он должен минимизировать ошибки пользователя и облегчать сопровождение QUIK разработчиком.
 
Владимир, интерфейс тут и так минимальный, слишком скудный и с неполным покрытием я бы сказал. Его надо расширять и углублять, а вы наоборот кастрировать предлагаете. При том что по итогу юзерам весь этот функционал придётся велосипедить самостоятельно, то есть в области простоты пользования будет отрицательный рост что называется.
 
Артем, Лапуль, Вы ещё и по интерфейсам спец?  :smile:  Информирую Вас, что я ЛИЧНО могу предложить интерфейс, как минимум, вдвое легче существующего, что только бездарям  тупорылым нынешний интерфейс может показаться "минимальным, слишком скудным и с неполным покрытием", им ВСЕГДА чего-то не хватает, им ВСЕГДА хочется что-то "расширять и углублять". В результате ЛЮБОЙ софт засирается так, что знаменитые Авгиевы конюшни выглядят на этом фоне чуть ли не благоухающим садом! Лапуль, у меня за плечами ДЕСЯТКИ диалоговых программных комплексов! А Вы разработали хоть один, умник? Какой тут, в задницу, могёт быть "функционал"? И Вам ли вообще говорить о функционале? Напоминаю, что я на этом форуме единственный, кто пишет на чистом Lua и я УЖЕ написал всё, что изначально планировал. У меня УЖЕ РЕАЛИЗОВАН весь этот грёбаный "функционал", да ещё такой, какой Вам с таким подходом не написать НИКОГДА! На данный момент это 16 (прописью: ШЕСТНАДЦАТЬ!) функций, включая main и все коллбеки, общим весом 18968 байт. И работает, падла! И КАК работает! :what:  
 
Владимир, ну тогда новую модель API в студию. А то губами шлёпать это не мешки ворочать.
 
Артем, А Вы, сударь, чем здесь всё это время занимаетесь? Неужто мешки ворочаете? :wink:

Ещё до Вашего появления здесь я предлагал обсудить как интерфейс Lua-программиста, так и организацию диалога (также на Lua) для конечного пользователя. Тогда эти предложения благополучно издохли. Уже потом я получил более убедительные сигналы, что задачи у разработчиков софта и их клиентов диаметрально противоположные: вторым нужна стабильно работающая версия, а первым - бесконечный выпуск всё новых версий. Ну, а на повизгивания распальцованных неучей чего-то там "в студию" мне много лет пилювать с высокой колокольни.
 
Владимир, ну что за детский сад опять - разглагольствовать о том какой вы молодец это всегда пожалуйста, а чтобы делом показать то найдется миллион отмазок? Складывается ощущение, что на деле вы из себя ничего толкового и не представляете.
 
Артем, Лапуль, покопайтесь в моих давних сообщениях, если интересно - мне лень ковыряться по "запросам" очередного распальцованного неуча. И я, в отличие от некоторых, отвечаю ЗА ВСЕ свои слова! :wink:  
 
Цитата
Владимир написал:
Артем, Лапуль, покопайтесь в моих давних сообщениях, если интересно - мне лень ковыряться по "запросам" очередного распальцованного неуча.
Цитата
Владимир написал:
Артем, только бездарям  тупорылым нынешний интерфейс может показаться "минимальным, слишком скудным и с неполным покрытием"

TGB, Артем,
прикольные вы чуваки, с интересом за вами наблюдаю. Я, видимо, не понимаю кайфа мазаться об говно.
Но вы не останавливайтесь, очень вас прошу! Наблюдать всё это крайне интересно.
 
swerg, А в чём Вы кайф понимаете, лапуль? В тяфтяфках из подворотни? У головожопых только две версии для "оправдания" своего поведения: "медицинская" и (гораздо более тупая и, соответственно, более популярная) версия "ржача". Вы, как вижу, перешли во вторую? Мы ведь давно с Вами во всём определились, а Вы всё никак не успокоитесь. Я понимаю: морды битые, отыграться хочется, но добавлять-то зачем? Вы же ЗНАЕТЕ, что по делу возразить ничего не можете - остаются тяфтяфки. Ладно, повожу малёк носом по нашим предыдущим разговорам, когда Вы еще " понимали кайф мазаться об говно":
Скрытый текст

Для справки: это Артем визжащий дурак, вроде Вас, а вот TGB как раз вполне профессионален, и уступает (по моим оценкам) на этом форуме разве что Антону. А Вы наблюдайте - вдруг поможет? Тяфтяфкать только не советую. Впрочем, дело Ваше.
 
Вы меня здесь упомянули всуе, наверное,  для того, чтобы я вам напомнил наш с вами диалог (кстати, по теме данной ветки)  :smile: .
Ссылка:  https://forum.quik.ru/messages/forum10/message51063/topic6053/#message51063
 
Мой предыдущий комментарий это ответ swerg.
 
Цитата
swerg написал:
Я, видимо, не понимаю кайфа мазаться
  Я не стал писать это сразу (извините, было некогда), но так как вам так сильно хочется приколов, что вы это особо отметили в вашем тексте, то пожалуйста.
  Вы внимательно прочитайте данную ветку, начиная со своего комментария № 88, и попытайтесь угадать с трех раз  :smile: . Кто, я или вы жаждет (и получает) грязи?
  Вы что, все-таки ловите в этом кайф?
 
1. Более 20 суток не проявляются ошибки синхронизации (смотрите историю исправления этой ошибки в этой ветке) реализации многопотоковости QLua (обусловленной реализо-ванной  разработчиками QUIK архитектуры обработки колбеков). Это, совершенно не значит, что нет ошибок в API взаимодействия скриптов пользователя с QUIK.
2. Есть  предложения, по которым мы ждем ответа от поддержки (их пока два, как я думаю полезных):
1) предложение по исправлению критической ситуации (зависания QUIK на длинных фрагментов байт-кодов «чистых» Lua, без обращения к C-функциям);
2) предложение (не устраняющего критической ситуации, но обеспечивающее эффективность выполнения длинных фрагментов кода QLua с частым обращением к «коротким» C-функциям).
3. Приходится наблюдать интенсивные обсуждения проблем обработки колбеков.
   Есть, как мне кажется, хороший документ разработчика QUIK: «Использование Lua в Ра-бочем месте QUIK.pdf». Наверное, его можно было написать лучше, но даже, в том виде, как он есть, если тот, кто его внимательно прочитает и поймет, может избавиться от многих проблем обработки колбеков.
 
Цитата
TGB написал:
Цитата
Старатель написал:
Предложение3. Дать скриптеру возможность самостоятельно устанавливать/снимать блокировку в любом месте пользовательского кода
Мне кажется, это может порождать ошибки в скриптах пользователей, не являющихся профессиональными программистами.
Как и в любом другом коде.
Кто-то даже с динамической типизацией справиться не может, далеко за примерами ходить не надо.
Ну и что ж теперь? Тут, как говорится, не умеешь - не пользуйся.
Надо делать так, как надо. А как не надо - делать не надо.
 
Старатель,
Цитата
Кто-то даже с динамической типизацией справиться не может,
В мой огород камушек, что ли? :smile: Динамическая типизация есть идеологический кретинизм, вне зависимости от умения с этим кретинизмом справляться (очень точное слово, кстати), и место ему на помойке, и только там!

В остальном я согласен с TGB: На мой взгляд, существуют 4 уровня программирования:
1. Аппаратный - его модули зависят от платформы, набора команд процессора и т.п.
2. Системный - тот, который и выполняет, собственно, всю работу, обращаясь при необходимости к объектам аппаратного уровня.
3. Прикладной - вся остальная часть кода разрабатываемого программного обеспечения, за исключением
4. Инструментальный - фактически подмножество прикладного и отличается от него лишь разными требованиями к квалификации программиста.

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

В идеале должно бы быть примерно так...
 
Цитата
Roman Azarov написал:
27.04.2021 06:18:12

  TGB , добрый день! Оба пожелания зарегистрированы, мы постараемся их рассмотреть. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожеланий в будущих версиях ПО.Каких-либо сроков назвать не можем. Как будет результат анализа пожеланий, мы сообщим Вам в данной теме.
  Все напряженно  :smile:  ждут.
 
Цитата
TGB написал:
Это, совершенно не значит, что нет ошибок в API взаимодействия скриптов пользователя с QUIK.
А вот и подтверждение этому из разных веток:
1) Опять ошибка получения кол-ва ордеров скриптом: https://forum.quik.ru/forum10/topic6503/ ;
2) [BUG] getFuturesHolding: ошибка в работе: https://forum.quik.ru/forum10/topic6526/ .
  Ошибки, описанные в упомянутых выше ветках, скорее всего, ошибки синхронизации функций API QLua. И ошибки такого вида, возможно, имеются и в других функциях API.
  Вообще, все функции API работы с QUIK из QLua должны быть потокобезопасными  из-за того, что к ним могут обращаться из нескольких одновременно запущенных скриптов (работающих в разных потоках). Причем, объекты синхронизации в таких функциях должны локализоваться в месте, общем для всех скриптов, и это место точно не global_State и тем более не lua_State. На месте разработчиков QUIK, я бы создал общий для всех скриптов пользователя массив, в котором для каждой функции API QLua выделил элемент хранения объекта синхронизации при работе с этой функцией.
 
Цитата
TGB написал:
На месте разработчиков QUIK, я бы создал общий для всех скриптов пользователя массив, в котором для каждой функции API QLua выделил элемент хранения объекта синхронизации при работе с этой функцией.
 Дополнение (разработчики это, наверное, понимают, но на всякий случай).
 Синхронизация должна выполняться не только при обращении к функциям API, но в соответствующих программах, готовящих данные для обсуждаемых функций.
 
Об областях синхронизации.
  Область синхронизации программы это та часть области видимости переменных программы, для которых предполагается обеспечить атомарность (! всей совокупности этих переменных как единого целого) при многопоточной обработки данных.
  Распространенной ошибкой синхронизации в параллельном программировании является неправильное определение области синхронизации. Для эффективности синхронизации ее область должна быть минимальнонеобходимой (однозначно определяющей результат программы), обеспечивающей корректность работы программы. Если область синхронизации программы содержит в себе минимальнонеобходимую, то все будет работать корректно (но не вполне эффективно). Если же область синхронизации не включает в себя минимальноне-обходимую, то это ошибка программы. Поэтому при разработках, в тех случаях, когда не очевидна минимальнонеобходимая область синхронизации, обычно первоначально область синхронизации выбирается с «запасом». Далее эта область, в процессе развития проекта, может быть «сужена», с целью повышения эффективности синхронизации, до минимальнонеобходимой.
 
TGB, добрый день!

Просьба сделать как с предыдущими пожеланиями, собрать само пожелание (что конкретно, по Вашему, необходимо доработать и каким образом), его актуальность и все комментарии к нему в одном сообщении.
Обязательно его зарегистрируем.
Страницы: Пред. 1 2 3 4 5 След.
Читают тему
Наверх