TL; DR. Как go от unix времени в секундах до даты-времени в формате ISO-8601? Это больше похоже на вопрос библиотеки, чем на вопрос о языке.
Я хотел бы иметь возможность интерпретировать метку времени пинга (unix время + микросекунды) как дату / время, чтобы иметь возможность визуализировать ее или выполнять дату и время операций на нем. У меня есть длинная трассировка пинга (тысячи строк), где каждая строка указывает на успех или неудачу пинга.
Мне уже удалось создать игрушечный пример с использованием регулярного выражения для получения времени unix (без микросекунды) но я не нашел, как использовать datetime в APL. Я нашел проект APLtree на Github от APLteam и их подпроекта под названием DateAndTime
, но я не смог его внедрить. Я не знаю, как поступить.
Обратите внимание, что я знаю, что у меня уже есть дата и время, записанные явно в формате ISO-8601 перед отметкой времени пинга, но для изучения основ APL я хотел бы нравится манипулировать датами. Я мог бы также выполнить операции unix раз, а затем попытаться (но как) преобразовать их в дату-время в формате ISO-8601.
Трассировка генерируется Linux с помощью команды:
ping -n -i 30 -O -D my.domain.name | while read pong; do echo "[WAN] $(date --iso-8601=seconds): $pong"; done
Выходная трассировка:
[WAN] 2020-01-31T18:02:35+0100: [1580490155.323878] 64 bytes from 8.8.8.8: icmp_seq=1037 ttl=234 time=720 ms
[WAN] 2020-01-31T18:03:34+0100: [1580490214.630890] no answer yet for icmp_seq=1038
Программа APL:
v←('\[(\d+)\.'⎕S'\1')⊃⎕NGET'/Users/ludo/Desktop/so/ping.txt' 1
v
1580490155 1580490214
⍴v
2
DISPLAY v
┌→──────────────────────────┐
│ ┌→─────────┐ ┌→─────────┐ │
│ │1580490155│ │1580490214│ │
│ └──────────┘ └──────────┘ │
└∊──────────────────────────┘
У меня другой вопрос: почему разница в ранге между использованием []
и ⊃
? У нас есть вектор в одном случае и простая строка в другом (скалярная)? Почему ⍴⍴v[1]
ноль? Смотрите пример ниже.
v←⎕NGET'/Users/ludo/Desktop/so/ping.txt' 1
v
[WAN] 2020-01-31T18:02:35+0100: [1580490155.323878] 64 bytes from 8.8.8.8: ic
mp_seq=1037 ttl=234 time=720 ms [WAN] 2020-01-31T18:03:34+0100: [1580490
214.630890] no answer yet for icmp_seq=1038 UTF-8-NOBOM 13 10
DISPLAY v
┌→───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ ┌→─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ ┌→──────────┐ ┌→────┐ │
│ │ ┌→───────────────────────────────────────────────────────────────────────────────────────────────────────────┐ ┌→──────────────────────────────────────────────────────────────────────────────────┐ │ │UTF-8-NOBOM│ │13 10│ │
│ │ │[WAN] 2020-01-31T18:02:35+0100: [1580490155.323878] 64 bytes from 8.8.8.8: icmp_seq=1037 ttl=234 time=720 ms│ │[WAN] 2020-01-31T18:03:34+0100: [1580490214.630890] no answer yet for icmp_seq=1038│ │ └───────────┘ └~────┘ │
│ │ └────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ └───────────────────────────────────────────────────────────────────────────────────┘ │ │
│ └∊─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ │
└∊───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
⍴v
3
v[1]
[WAN] 2020-01-31T18:02:35+0100: [1580490155.323878] 64 bytes from 8.8.8.8: ic
mp_seq=1037 ttl=234 time=720 ms [WAN] 2020-01-31T18:03:34+0100: [1580490
214.630890] no answer yet for icmp_seq=1038
⊃v
[WAN] 2020-01-31T18:02:35+0100: [1580490155.323878] 64 bytes from 8.8.8.8: icm
p_seq=1037 ttl=234 time=720 ms [WAN] 2020-01-31T18:03:34+0100: [15804902
14.630890] no answer yet for icmp_seq=1038
⍴v[1]
⍴⊃v
2
⍴⍴v[1]
0
⍴⍴⊃v
1