Можно ли восстановить запросы qpad, если qpad закрыт, но порт открыт? - PullRequest
0 голосов
/ 26 февраля 2019

Я выполнил несколько запросов, но перед их сохранением произошел сбой qpad.Однако q-port, на котором выполнялись эти запросы (на моем компьютере с Windows), все еще открыт.Я могу восстановить переменные и функции на \v и \f соответственно.

Есть ли способ восстановить все q statements, которые я запускал, используя qpad?Я забыл сохранить файл журнала, поэтому я пытаюсь найти способ восстановить запросы, используя q-port.

Спасибо

Ответы [ 4 ]

0 голосов
/ 07 марта 2019

Недавно узнал, что есть резервная копия ваших сценариев q в "c / users // Appdata / local" и автоматически сохраняются каждые 5-6 минут. Это временные файлы, которые удаляются при сохранении сценария.Однако, если ваш qPad вышел из строя, вы можете найти ваши файлы здесь :)

0 голосов
/ 26 февраля 2019

К сожалению, нет способа получить ваши старые запросы по причинам, указанным Дэвисом.Но если вы не можете / не хотите создавать таблицы на своем сервере для их сохранения, вы также можете установить флажок запросов журнала в настройках QPad:

Q> Настройки> Редактор> Журнал запросов в "query_date.log "

Теперь, когда вы запускаете запросы, они будут записаны в этот файл журнала в том же каталоге, что и QPad.exe, вместе с сервером и отметкой времени, например:

/ 02/26/19 09:54:52 on `:localhost:1234:: from QPad1*
  show `logthis
/ 02/26/19 10:03:03 on `:localhost:1234:: from QPad1*
  a:10
0 голосов
/ 26 февраля 2019

К сожалению, я не думаю, что есть способ получить историю ваших команд.Другие уже упоминали почему, поэтому я не буду вдаваться в подробности.Однако вы можете легко сохранить файл журнала в будущем:

Когда вы запускаете сервер, добавление флага -l позволит вам определить путь к файлу журнала.Любые команды, отправленные на сервер от клиента, теперь будут регистрироваться.Например,

q ../log/logtest -l -p 5555
t:([]date:`date$();sym:`sym$();price:`float$())

запустит процесс прослушивания на 5555, регистрируя все сообщения, которые вызывают обновление сервера.Так что, если я открою дескриптор 5555 в другой q сессии h:hopen `::5555 и обновлю таблицу t

q)h"insert[`t](2000.01.01;`appl;102.3)"
,0

, сервер обновится t примерно так

q)t
date       sym  price
---------------------
2000.01.01 appl 102.3

Тамбудет создан файл журнала, в котором будут показаны все команды, отправленные на сервер.ПРИМЕЧАНИЕ, однако, он будет регистрировать только те команды, которые изменяют состояние данных сервера.

Этот файл журнала может быть перезагружен в случае сбоя сервера, используя ту же команду, что и раньше.

0 голосов
/ 26 февраля 2019

Ответ - нет.qpad - это графический интерфейс, который взаимодействует с процессом q.Причина, по которой вы можете получить переменную и функцию, заключается в том, что процесс не умер.Для запроса по умолчанию q не сохранит его, если только вы не настроите .z.pg для сохранения записи в таблице queryHistory.

например,

q).z.pg:{[x]`queryHistory insert ([]queryTime:.z.P;query:enlist x)}
q)queryHistory:([]queryTime:`timestamp$();query:())
q)10+10
20
q)testTab:([]sym:10?`1;val:10?100)
q)queryHistory
queryTime query
---------------

queryHistory не добавляется сзапись, как это делается в самом процессе q, если вы сделаете это в своем qpad:

10+10
testTab:([]sym:10?`1;val:10?100)

вы увидите, что будет добавление записи, так что даже если ваш GUI потерпел крах, вы можете проследить запрос

q)queryHistory
queryTime                     query
-------------------------------------
2019.02.26D17:32:38.471063000 "10+10"
q)queryHistory
queryTime                     query
----------------------------------------------------------------
2019.02.26D17:32:38.471063000 "10+10"
2019.02.26D17:32:52.790863000 "testTab:([]sym:10?`1;val:10?100)"
...