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

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

Страницы: Пред. 1 2 3 4 5 6 7 8 9 След.
Повторное использование строки
 
Можно найти, что эта тема (чудовищная конкатенация строк в Луа) волнует народ в районе англоязычного stackoverflow, а здесь создатель Луа предлагает такую полумеру: https://www.lua.org/pil/11.6.html
Повторное использование строки
 
И да, ваш перегруженный вариант анекдота некорректен: ведь я с самого начала играл на стороне чукчи...
Повторное использование строки
 
Тут дело не в том, что есть запись на диск, а в том, что за 1 мкс десятки раз может выполняться оператор
Код
mess = mess .. <строка от коллбэка>
что будет приводить к созданию новой строки и переписыванию в неё содержимое старой, которую должен убрать сборщик мусора. И ЦП будет занят этой бесполезной издевательской работой. Я считаю, что в этом причина торможения.
Повторное использование строки
 
И всё-таки, я на этом форуме несколько раз видел, что людям издавна не хватает скорости (и для них это "жизненно важно"), а наращивание числа ядер и повышение тактовой частоты мало что не даёт, вот ещё пример такой темы: https://forum.quik.ru/forum10/topic3872/

А геологам просто надо держать свои снегоходы заведёнными. :smile:
Повторное использование строки
 
Мне кажется, что ничего не случится, если извне (из длл) строка будет изменена, ведь, если строка не находится внутри таблицы, вычисление хеша от неё не нужно?
Повторное использование строки
 
Кто-то предлагал вместо наращивания строки запоминать каждый вывод коллбэка в строку таблицы t, а потом делать
Код
s = table.concat(t)
Но это тоже дурацкий костыль для обхода неизменяемости строк Луа... Чувствую, что можно сделать, как я хотел в #1...
Звук через mciSendString и MessageBeep
 
Вопрос, почему mciSendString в консольной программе не выдаёт звук, так и остался открытым...
Как вы боретесь с описками в именах переменных?
 
Не нашёл нормального "линтера", а условный оператор это не совсем то и громоздко...
Повторное использование строки
 
Как-то уже об этом писал...
Есть строка mess (age), в которой коллбэки накапливают свой вывод, при превышении определённой длины строка записывается в файл. Потом обычно пишут mess='', чтобы сбросить длину строки в 0, но что в этом случае произойдёт? Создастся новая строка, или в структуре TString для этой строки её длина установится в 0?
Я не вижу, где хранится число байтов, выделенных под строку, и как контролируется выход за её предел при дописывании к строке?
Не хочется ненужного пересоздания строки и сборки мусора, а хочется просто зарезервировать под строку 10 Мб и использовать эту же память под строку постоянно. Зачем выметать сор из избы строки, если можно обойтись без этого? Как это всё оптимизировать и сделать, как в нормальных языках типа того же си?
DNS влияет на скорость работы Квика?
 
Похоже, что DNS не ускорит работу Квика, хотя, в доступных соединениях у Сервер1 и Резерв стоят IP, а у Сервер 2 в столбце IP стоит почему-то quik.vtb.ru.
Как получить цены "BID" и "OFFER" чтобы они выводились как в стакане?
 
Цитата
paluke написал:
Код
string.format('%.'..tostring(price_scale)..'f', tonumber(price))
Здесь вызов tostring по-моему лишний.
DNS влияет на скорость работы Квика?
 
Цитата
nikolz написал:
Serge123 ,
А Вы знаете, зачем нужен DNS?
----------------------
Судя по вопросу, Вы этого не знаете.
----------------------
Прочитайте в интернете и вопрос отпадет сам собой.  
Я когда-то знал это, даже своей программкой получал пакет по UDP с корневого сервера. Сейчас поискал в Гугле, зачем нужен DNS, оказалось, что для того же, для чего и раньше:

===
DNS (система доменных имен) преобразует доменные имена, удобные для человеческого восприятия (например, www.amazon.com), в IP-адреса, понимаемые машиной (например, 192.0.2.44).
===

и вдобавок

===
Какой DNS самый быстрый?
1.1.1.1 — самый быстрый в мире, ориентированный на конфиденциальность DNS-резолвер
===

А в чём был замечен криминал у этой темы?
DNS влияет на скорость работы Квика?
 
Ошибся: не провайдеру, а брокеру...
DNS влияет на скорость работы Квика?
 
Как часто ПК запрашивает DNS сервер для посылки данных провайдеру? Можно эту частоту уменьшить?
DNS влияет на скорость работы Квика?
 
Или DNS родного провайдера лучше? Чем можно сравнить скорости, в Квике можно как-то заметить ускорение?
DNS влияет на скорость работы Квика?
 
Сегодня увидел, что кое-кто на западе советует установить самые быстрые и бесплатные DNS 1.1.1.1 и 1.0.0.1, например:
nimaboldi.uz/как-настроить-в-windows-10-самый-быстрый-dns/
Есть ли от этого польза В РФ?
А есть ещё DNS от Гугла 8.8.8.8.
Что из этого всего лучше?
Вопрос по стеку Lua, стеку Lua и нюансы его чтения
 
Цитата
nikolz написал:
nil  в Lua  - это всегда false.
Добавлю отсебятину: в Lua для логического типа и типа nil не используется память под данные: просто байт для хранения типа переменной указывает, что тип этой переменной nil. Для логического типа байт типа указывает, что это лог. тип, а дополнительный бит в этом байте равен 0/1 в случае false/true.
Как вы боретесь с описками в именах переменных?
 
В Луа нет опции предупреждать об использовании необъявленных переменных, как это сделано в Перле, поэтому могут возникать труднонаходимые ошибки. Есть ли какие-нибудь сторонние программы для проверки скриптов на такие описки?
Получить всю таблицу целиком, Получить всю таблицу целиком без цикла
 
Не знаю, почему не выводит, но я бы написал fn так (для чего в неё передавать sec_code и currentbal?):
Код
function fn(limit_kind)
 return limit_kind==2
end
Схема торговой программы
 
Цитата
Constantin написал:
Я тоже свою систему написал. Правда не торгую.
Она у вас по какому принципу покупает: по индикаторам, по всплеску цены акции, по минимуму у волны в коридоре цен?.. При проверке работы в плюсе торгует?
способ звукового сигнала в луа
 
Например, это работает:
Код
playsnddll.mciSendString('play "C:/Windows/Media/ringout.wav"')
способ звукового сигнала в луа
 
Цитата
Nikolay написал:
Вы же использовали кавычки не в том месте.
Опять ничего не понял...
Я из Луа по-всякому задавал команды, в т.ч.
Код
playsnddll.mciSendString('play "C:/Windows/Media/Windows Hardware Fail.wav"')
Если есть пробелы, то не работает.
способ звукового сигнала в луа
 
Цитата
nikolz написал:
  if (lua_gettop(L)>1)SleepEx(lua_tointeger(L,2),1);
Не понял, в чём здесь отличие от простого Sleep?

Цитата
Nikolay написал:
Там тоже надо путь с пробелами обрамлять в кавычки. Весь путь, а не только часть.
Я в #31 обрамлял также часть пути, по-всякому пробовал, не работает! Если у вас работает, то покажите команду из Луа и из Си.
способ звукового сигнала в луа
 
Вернее, дело не в звуковом устройстве: в упрощённом варианте команд файлы с пробелами не играются, а в той форме, что была у w32, как помню, они игрались.
способ звукового сигнала в луа
 
Короче, устройство waveaudio почему-то не играет файлы с пробелами, хоть тресни...
способ звукового сигнала в луа
 
Опять ошибся: это другой файл игрался, просто я с него комментарии зачем-то убрал... :what:  
способ звукового сигнала в луа
 
Тьфу ты, черти мелкомягкие: я так и подозревал, что такой костыль заработает:
Код
mciSendString("PLAY C:/Windows/Media/Windows Hardware Fail.wav type waveaudio", NULL, 0, NULL);
Явная ошибка в парсинге команды...

Сколько времени на эту ерунду потерял вместо того, чтобы что-то полкзное для себя сделать... :what:  
способ звукового сигнала в луа
 
Нет, не работают оба варианта:
Код
mciSendString("PLAY C:/Windows/Media/\"Windows Hardware Fail.wav\"", NULL, 0, NULL);
mciSendString("PLAY \"C:/Windows/Media/Windows Hardware Fail.wav\"", NULL, 0, NULL);
способ звукового сигнала в луа
 
Нет, тут я ошибся, сейчас ещё проверю...
способ звукового сигнала в луа
 
А в примерах, аналогичных w32, это работало без доп. кавычек...
способ звукового сигнала в луа
 
Цитата
Nikolay написал:
Чтобы брался путь с пробелами, необходимо путь обрамлять кавычками.
Попробовал так:
Код
mciSendString("PLAY C:\\Windows\\Media\\\"Windows Hardware Fail.wav\"", NULL, 0, NULL);
Не работает!
способ звукового сигнала в луа
 
Для чего в Си и в Луа в путях ставят две обратных косых вместо оной прямой, ведь Виндовс в путях понимает одну прямую косую: C:/Windows/Media/Alarm09.wav?
способ звукового сигнала в луа
 
В принципе, получился неплохой подарок к 8 Марта (а чем я хуже женщины?) Но неработоспособность в некоторых случаях омрачает предпраздничное настроение... :what:  
способ звукового сигнала в луа
 
Хм, методом тыка убрал ALIAS, как было в w32, устройство взял waveaudio, и звуки стали смешиваться:
Код
static int forLua_mciSendString(lua_State *L)
{ mciSendString("OPEN waveaudio", NULL, 0, NULL);
  mciSendString("PLAY C:\\Windows\\Media\\Alarm09.wav", NULL, 0, NULL);
  mciSendString("PLAY C:\\Windows\\Media\\Alarm06.wav", NULL, 0, NULL);
  mciSendString("PLAY C:\\Windows\\Media\\ringout.wav", NULL, 0, NULL);
//  mciSendString("PLAY C:\\Windows\\Media\\Windows Hardware Fail.wav", NULL, 0, NULL);
  return 0;
}
Т.е., методика такая: один раз выдаём команду OPEN и потом много раз только PLAY, а в OnStop можно выдать CLOSE waveaudio?

Но почему не получается играть файлы с пробелами, как в комментариях??
И почему в консольной программе это всё продолжает не работать???
способ звукового сигнала в луа
 
Цитата
Nikolay написал:
Можно даже проигрывать кусок из файла.
Я на те страницына сайте МС смотрел, не нашёл, как смешивать звуки.
Я сейчас сделал аналог того, что у меня игралось в dll:
Код
#include <stdio.h>
#include <windows.h>
#include <Mmsystem.h>

int main()
{ if (!mciSendString("OPEN C:\\Windows\\Media\\chord.wav TYPE MpegVideo ALIAS QUIK_MP3", NULL, 0, NULL)) puts("fail");
  mciSendString("PLAY QUIK_MP3", NULL, 0, NULL);
  return 0;
}
Не играет, выдаёт fail. Не пойму, почему это работает в dll для Квика. Такое впечатление, что в консольной программе mciSendString не работает. А у вас как?
Транслировать командой
Код
gcc.exe playsnd.c -o playsnd.exe -O2 -s -lWinmm -m64 -std=c17
Попробовать что-ли с пом. mpeg123 что-то сделать? Она большая, а мне надо мало, ковырять её неохота...
способ звукового сигнала в луа
 
Цитата
nikolz написал:
могу выложить dll
Программеров интересуют исходники, чтобы не грузить зоопарк посторонних длл (по одной для каждого случая)...
способ звукового сигнала в луа
 
Ещё для смешивания звуков на форумах советовали использовать сторонние звуковые биб-ки или ДиректХ (ДиректСаунд).
способ звукового сигнала в луа
 
Цитата
Nikolay написал:
Можно даже параллельно проигрывать звуки, если использовать правильную команду.
Спасибо, а правильная это какая? У меня создалось впечатление, что mci это не умеет.
Звук через mciSendString и MessageBeep
 
Оказывается, был уже похожий пример: https://forum.quik.ru/messages/forum10/message44608/topic5389/#message44608
Звук через mciSendString и MessageBeep
 
Попробовал играть звук через PlaySound, почему-то не играет звук асинхронно и ошибку не возвращает, как было сказано на стр. https://learn.microsoft.com/en-us/previous-versions//dd743680(v=vs.85)

Вот пример программы:
Код
#include <stdio.h>
#include <windows.h>
#include <Mmsystem.h>

int main()
{ char *sname = "C:\\Windows\\Media\\chord.wav";

  if (PlaySound(sname, NULL, SND_FILENAME | SND_ASYNC)) puts("Success\n");
  if (!PlaySound("SystemDefault", NULL, SND_ALIAS | SND_SYNC)) puts("Fail\n");
  return 0;
}
Вот компиляция:
Код
gcc.exe playsnd.c -o playsnd.exe -O2 -s -lWinmm -m64 -std=c17
Кто что скажет, почему асинхронно не работает? Или это только у меня так?
способ звукового сигнала в луа
 
Мне ваш пример с os.execute и 10-кратным появлением окна цмд перекрыл все стаканы... А если бы у меня в это время пошли сделки? Представляете свою материальную отвественность? :what:  
способ звукового сигнала в луа
 
Цитата
nikolz написал:
Т е не надо никаких dll  для этого , понятно?
Из моей темы, где я привёл свой пример на основе w32, было видно, что мне это понятно...
И мне почему-то кажется, что SoundPlayer не может воспроизводить mp3.
Схема торговой программы
 
А может, его звали Вальдемар, кто его знает...
способ звукового сигнала в луа
 
Цитата
nikolz написал:
Кроме музыки, в модуле можно синтезировать предложения .
Круть. На след. этапе можно сделать виртуальную дикторшу.
А для простых смертных у mciSendString предусмотрено проигрывание звука с заданного смещения и заданной длительности.
Схема торговой программы
 
Кстати, если кто не знает, Буратино в этой сказке - это сам А. Толстой, Карабас-Барабас - Мейерхольд (которого Толстой не любил), а Дуремар - помощник Мейерхольда, которого звали Вольдемар. У др. героев тоже были прототипы. Поэтому не всё так просто.
Схема торговой программы
 
Цитата
nikolz написал:
на сайте института Эллиотта  англ. был такой сайт
Дюже умнО, и глаза не железные...
Неприятный эффект при ограничении глубины стакана
 
И в конце: "если общее число строк в стакане (в моём случае) <= 20?"
Неприятный эффект при ограничении глубины стакана
 
Пардон, букву перепутал:  "и 10 с зелёным, ТО при поступлении заявки на продажу..."
Неприятный эффект при ограничении глубины стакана
 
Брокер ограничивает глубину стакана в 20/20, я установил 10/10. Во время выставления предварительных заявок (аукцион открытия) наблюдал такую картинку в стакане: виднеются 10 заявок на покупку и 10 на продажу, многие из них пересекаются. При этом по цене, которая через неск. сек. станет лучшей ценой покупки, видно много акций, а по цене на шаг выше не видно предложений продать, видны только предложения купить. В 1-й момент я подумал, что намечается какое-то мошенничество, почему-то захотелось снять свою крупненькую заявку на покупку и начать рвать на себе все волосы, раскладывая их в аккуратные кучки...

Но во 2-й момент я догадался, в чём дело: по логике программиста, если в стакане присутствуют 10 строк с красным фоном (на продажу) и 10 с зелёным, но при поступлении заявки на продажу ничего отображать не надо, хотя, общее число строк в стакане < 20 из-за пересечения довольно многих заявок на покупку и на продажу.

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

Не знаю, обсуждалось это или нет на форуме и как решить этот вопрос... Возможно, стоит подумать, чтобы отображать более 10 заявок на покупку/продажу, если общее число строк в стакане (в моём случае) < 20?
Схема торговой программы
 
Цитата
nikolz написал:
после кризиса всегда появляются новые Гуру, так как у старых слился депозит.
А это разве может помешать старым гурам базара, у которых "слился депозит", продолжать ими оставаться? Толпа-то этого не знает...

Я не обращал внимания на дату. Если найдёте что-то современное и полезное, дайте ссылку.
Страницы: Пред. 1 2 3 4 5 6 7 8 9 След.
Наверх