Ayrat
и чтение как происходит, ты кидаешь буфер в ТСП и тебе оттуда выезжает заполненный?
Ayrat
а если буфер маленький?
Vasily
Не, я из тсп читаю блобы
Vasily
Ну типа сколько пришло
Vasily
А дальше с ними ебусь
Ayrat
понятно, эти блобы где висят? ты на выходе из тсп получаешь массивы на хипе или там (out byte[] array) ?
Ayrat
вот ты сделал
let bytesReaded = tcp.ReadNext()
ты далее чо делаешь:?
Vasily
Дальше посылаю в мейлбокс с состоянием
Vasily
У состояния есть длина и преалоцированный MemoryStream
Roman
Только у меня этот кусок ещё на сишарпе
Vasily
Ну я почти наговнякал на ArraySegment
Alexey
ArraySegment - странная штука...
Vasily
Ну вроде аллокаций не делает
Vasily
Мда, код получился страшноватеньким, но работает
Vasily
Короче, надо, чтобы кто-то его глянул
Vasily
Ща гист сделаю
Romɑn
Есть у нас онлайн бенчмарки для кода?
типа вот две раелизаии ф-ции, вот входные данные для них.
Проведи бенчмарк плз
Vasily
Онлайн нет, но можно на BenchmarkDotnet
Romɑn
Romɑn
Но шпашибо
Vasily
Expecto вроде имеет поддержку этого дела
Ayrat
Vasily
Кароч, набрасывайте https://gist.github.com/vshapenko/4b0b912d521ba7ac008f0d013432f807
Romɑn
Romɑn
Это не жабаскрипт!
Vasily
Romɑn
let! (Raw m) = inbox.Recieve()
Romɑn
минус вложенность
Romɑn
что?
Vasily
Код громоздкий
Vasily
Надо упрощать
Romɑn
раззделяй и властвуй
Vasily
Переписал я код
Vasily
Теперь он занимает 20 строк
Ayrat
давай тот который на 20
Vasily
https://gist.github.com/vshapenko/4b0b912d521ba7ac008f0d013432f807
Vasily
Еще несколько строк можно убрать за счет |> по идее
Vasily
В общем, вышеприведенный код вкупе с Sockets.Pipelines.Unofficial нормально так читает данные из tcp
Romɑn
Shub
скажите, зачем вы так пишете?
Shub
let empty (msg:ArraySegment<byte>)=
let length=readInt msg.Offset msg.Array|>fst
let stream=new MemoryStream(length+4)
stream
Shub
не лучше ли так:
Shub
let empty (msg: ArraySegment<byte>) =
let (length, _) = readInt msg.Offset msg.Array
new MemoryStream(length + 4)
Vasily
Hog
дебажить проще
Hog
я тебе просто один и ризонов даю
Vasily
Я вот, кстати, переписанный код просто запустил и он работал
Hog
про fst тоже думал
Hog
про декомпоз при лете
Shub
точка остановки покажет тебе все нужные детали, если что
Shub
еще меня беспокоят излишние аннотации
Shub
Сайм тебе Хидни-Милнера дал. выводи, выводи типы! нет, не хочу выводить типы, хочу аннотировать все вручную
Shub
компилятор может вам сам сгенерить файлы сигнатур
Vasily
Там не выводит
Shub
так может у вас программа не type sound?
Hog
там может вывести наверное, но только после того, как ты полчаса на красных червяков посмотришь
Hog
т.е. в процессе написания - типы помогают
Vasily
Я аннотации пишу только там, где необходимо
Hog
а потом - не мешают :)
Vasily
А дедушка Ниггурат чет возбудился. Вон, аж песок посыпался и сухие водоросли
Крылатый
Дедушка Нургл
Shub
Shub
мне нужны жертвы
Shub
и еще я не сторонник стиля “f# as better c#”
Hog
F# is a worse OCaml ?
Vasily
F# is a worst haskell
Hog
всё-таки хаскель из иной оперы
Vladislav
F# is a better Java
Hog
Vladislav
Vladislav
Просвещаюсь
Vasily
Сайм держит на руках компилятор f#?
Anonymous
пацаны, а у кого проблемы с осанкой от работы? как решаете? кто-то стоя иногда работает за модными столами?