Size: a a a

Clojure — русскоговорящее сообщество

2019 July 23

MG

Mikhail Gusarov in Clojure — русскоговорящее сообщество
Там трафика - байты в минуту. Можно хоть на brainfuck с интерпретатором на malbolge.
источник

MG

Mikhail Gusarov in Clojure — русскоговорящее сообщество
Зато структура пакетов такая, что повеситься можно, я не хочу ловить NullPointerException и OutOfBoundsException из-за того, что бегаю по байтикам руками.
источник

DA

Daniil Arsentiev in Clojure — русскоговорящее сообщество
Т.о имеем простоту свитча и аккратно организованный код
источник

MG

Mikhail Gusarov in Clojure — русскоговорящее сообщество
Это только чтение фрейминга, а внутри request/response/notification, для них диспетчеризация по функции, у некоторых функций диспетчеризация по подфункции, и тело пакета в каждом случае ручной выделки, иногда с раскладкой по битам.
источник

MG

Mikhail Gusarov in Clojure — русскоговорящее сообщество
Да, для функций/подфункций будет мультиметод.
источник

DA

Daniil Arsentiev in Clojure — русскоговорящее сообщество
И что смущает?
источник

MG

Mikhail Gusarov in Clojure — русскоговорящее сообщество
Смущает написание этого на джаве, как @astreb предложил.
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
необязательно расставлять везде :^private. Для объявления приватных функций есть defn-, а константы пусть публичные будут.
источник

DA

Daniil Arsentiev in Clojure — русскоговорящее сообщество
Mikhail Gusarov
Смущает написание этого на джаве, как @astreb предложил.
Ну да, на кложе будет по проще
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
просто ^:private на каждой строке зашумляет код
источник

MG

Mikhail Gusarov in Clojure — русскоговорящее сообщество
(def -- :private) (def ^-- ,,,) :)
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
Еще для бинарного разбора есть джавный класс ByteBuffer, иногда бывает полезен
источник

MG

Mikhail Gusarov in Clojure — русскоговорящее сообщество
Мне скорее регэкспы на стероидах тут нужны. "байт, потом ещё три байта, потом опционально следующая секция, где первый байт из битовых полей, потом четыре байта LE integer, потом ..."
источник

MG

Mikhail Gusarov in Clojure — русскоговорящее сообщество
Да, ByteBuffer поможет числа читать, вижу.
источник

VM

Vyacheslav Mikushev in Clojure — русскоговорящее сообщество
Попробуй посмотреть на подход из Practical Common Lisp.
источник

MG

Mikhail Gusarov in Clojure — русскоговорящее сообщество
Всякие gloss смотрел, у них плохо с "а тут байт с длиной последующей секции"
источник

VM

Vyacheslav Mikushev in Clojure — русскоговорящее сообщество
источник

VM

Vyacheslav Mikushev in Clojure — русскоговорящее сообщество
Эту главу и следующую.
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
когда читаешь ByteBuffer, у него сдвигается внутренний указатель, и чтение получается императивное, что удобно. Например, считал Int, который указывает, сколько читать дальше. Потом читаешь массив интов с длиной, полученной на предыдущем шаге, и тд
источник

A

Alex in Clojure — русскоговорящее сообщество
Mikhail Gusarov
Мне скорее регэкспы на стероидах тут нужны. "байт, потом ещё три байта, потом опционально следующая секция, где первый байт из битовых полей, потом четыре байта LE integer, потом ..."
да если хочется еще медленнее парсить байты ))
источник