@Fsharp_chat

Страница 526 из 772
Ivan
29.03.2018
19:56:36
Кстати если интересно, объясню как связан орлеанс, сериализация и мой интерес на практике.

На флете - 0 копирование

Vasily
29.03.2018
19:57:19
Ну как вариант, да

Google
Vasily
29.03.2018
19:57:53
В теории должно что- то вроде линз получиться для массивов

Vasily
29.03.2018
19:58:22
Ну хочется написать генерик же

А компилятор ругается

Ivan
29.03.2018
19:59:20
Просадка на сериализации: нативный протокол Orleans - 10000 rps Grpc + protobuf - 5000 rps Один и тот же протокол. Сервер grpc in server orleans, без клиентского оверхида.

Vasily
29.03.2018
20:00:17
10000 rps тоже как- то маловато

Ivan
29.03.2018
20:00:18
Все на Immutable<>

Evgeniy
29.03.2018
20:00:25
Ну хочется написать генерик же
Не понял. Можно пример?

Vasily
29.03.2018
20:01:00
Ну генерик функцию, которая принимает значение типа а,и возвращает енам типа б

Ivan
29.03.2018
20:01:11
На 2 процаx, клиент + сервер. Я по разнице на локале. Там еще докер под винду на 2 проца.

Vasily
29.03.2018
20:01:49
Она не генерик

Ivan
29.03.2018
20:02:10
Не по общей - так и на 50000 легко выходит. Больше не нагружали.

Google
Vasily
29.03.2018
20:02:56
EnumOfValue
Там явный вывод типов

Evgeniy
29.03.2018
20:03:19
Там явный вывод типов
А как он должен угадать, какой enum возвратить нужно? :)

@vshapenko Кажется, я начал понимать, какая задача.

Vasily
29.03.2018
20:05:47
Ну типа ’’’getenum<'a,'b> (d:'a):'b

Ivan
29.03.2018
20:05:54
Только что админ написал - на тройке 38 ядерных машин - порядка 2 миллионов rpc

10 Гигабит по сети - возможно дал бы больше

Ivan
29.03.2018
20:07:25
Не, у нас пишут плохо...

Evgeniy
29.03.2018
20:07:48
Ну типа ’’’getenum<'a,'b> (d:'a):'b
Смотри, EnumOfValue отлично работает, если прописать возвращаемый тип. type uColor = | Red = 0u | Green = 1u | Blue = 2u let col3 : uColor = EnumOfValue 2u

@vshapenko Или ты хочешь соответствие? тип значения - тип енума

Vasily
29.03.2018
20:08:13
А насчёт языка для сериализации - имхо, самое сложное, написать язык для десериализации

Конкретно под каждый енам я уже написал

Теперь хочется поведение обобщить

Ivan
29.03.2018
20:09:09
Попробую. Выкаяу на гитхаб отпишусь. Писать буду на F#

Vasily
29.03.2018
20:09:47
Попробую. Выкаяу на гитхаб отпишусь. Писать буду на F#
Там проблема с преобразованием в собственно объект

На рекордах получается криво

Ivan
29.03.2018
20:10:07
Пармер и АСТ, а прцессинг все же пока нет нативной поддержки на C#

На интерфейсах и методах через Memory<> и Span<>

Google
Vasily
29.03.2018
20:12:02
На интерфейсах и методах через Memory<> и Span<>
Ну это всего лишь вариант где хранить

Ivan
29.03.2018
20:12:32
И кодогенерация, возможно на тайп провайдерах

Vasily
29.03.2018
20:12:38
Вариант как сделать обратное преобразование не очень криво весьма интересен

Ivan
29.03.2018
20:12:58
Меня больше интересует прямое

Vasily
29.03.2018
20:13:07
Прямое легко

Эту задачу я уже решил

Ivan
29.03.2018
20:13:25
Оно дороже, как делать десериализацию, я представляю

Vasily
29.03.2018
20:14:04
Я не представляю, как описывать десериализации в определенные поля структуры данных

Ivan
29.03.2018
20:14:21
Хотелось бы потоковую, но не изобретается

Vasily
29.03.2018
20:14:43
Ну вот я тоже про потоковую ща говорю

Ivan
29.03.2018
20:15:33
А нее надо в поля. Надо в методы. Внизу просто буфер, метод знает смещение и читает. Пока самая главная проблема - UTF8String

Тут палка, что чтение не нужно делать потоковым. По моему мнению. А вот запись - никак не получается без 1 копирования

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

Evgeniy
29.03.2018
20:19:21
Теперь хочется поведение обобщить
Стандартный трюк. https://bit.ly/2uBuwJe

@vshapenko Подходит? Я ссылку поправил.

Vasily
29.03.2018
20:36:51
Evgeniy
29.03.2018
20:37:02
Да блин. :)

Vasily
29.03.2018
20:37:13
По факту опять на каждый енам преобразование

Evgeniy
29.03.2018
20:38:21
По факту опять на каждый енам преобразование
Я больше не вижу вариантов. Нам в любом случае нужна информация о типе возвращаемого енума.

Google
Evgeniy
29.03.2018
20:38:38
Или мы ее берем из контекста, или жестко прописываем правила вывода.

По факту опять на каждый енам преобразование
Внутри — да, но снаружи у тебя обобщенная функция.

Evgeniy
29.03.2018
20:43:01
Магия
Просто выбор правильной перегрузки.

Магия
Этой магии бы нормальный синтаксис.

Чтобы делать простенький статический диспатч по типу.

Roman
29.03.2018
20:51:09
Этой магии бы нормальный синтаксис.
может можно в computations expressions зпихнуть?

он статический

Evgeniy
29.03.2018
20:52:58
Например, в стандартной библиотеке разрешен вот такой синтаксис. https://github.com/Microsoft/visualfsharp/blob/master/src/fsharp/FSharp.Core/prim-types.fs#L3442-L3463

Сложно сказать, правда, что там конкретно можно, потому что документации нет.

Roman
29.03.2018
20:55:04
(# это же il инъекции вроде

или это <# ?

Evgeniy
29.03.2018
20:55:25
Да, это про IL.

Но я говорю про when после тела функции.

Roman
29.03.2018
20:57:11
Но я говорю про when после тела функции.
там неявно вызывается вот это https://github.com/Microsoft/visualfsharp/blob/master/src/fsharp/FSharp.Core/prim-types.fs#L2553-L2582

Evgeniy
29.03.2018
20:58:42
Я подозреваю, что не неявно, а когда не получилось статически разрешить. Тогда вызывается вспомогательная функция для "динамического" сложения.

Artemy
29.03.2018
21:53:17
всмысле про биндинги
Типа импорт .d.ts облегчает работу? Или в Fable проще и вручную биндинги делать?

Дмитрий
29.03.2018
22:14:49
Не, у нас пишут плохо...
В юду на фишарпах пишут? Похоже, моего друга, что к вам пару месяцев назад устроился ждёт сюрприз

Google
Roman
29.03.2018
22:16:18
Artemy
29.03.2018
22:24:39
Вот возможно скоро попробую к Вебшарперу какой-нибудь простой биндинг сделать; заценю, каково оно.

Roman
29.03.2018
22:25:39
Вот возможно скоро попробую к Вебшарперу какой-нибудь простой биндинг сделать; заценю, каково оно.
Простой там одинаково делается, а вот сложный по моему легче на фэйбл, но тут каждому свое

Artemy
29.03.2018
22:26:33
Ну мне пока видится, что .d.ts могут знатно сократить объём рутинной работы в случае сложных биндингов

Тут большое преимущество, похоже.

Artemy
29.03.2018
22:27:58
А в случае генерации биндинга с помощью ts2fable оно прямо корректно всё транслирует или нужно обычно подправлять?

Roman
29.03.2018
22:28:13
Он транслирует так что работает

Дальше над этим можно писать обертки

Но к слову вебшарпера реализовал ddp из meteorjs, а на fable у меня не получилось meteorjs портировать

Но это скорее всего мое неумение тогда было, сейчас meteor js уже не нужен)

Кстати, я видел провайдер типов для graphql для fable(если не ошибаюсь) было бы интересно получить tp в js

https://github.com/fsprojects/FSharp.Data.GraphQL/blob/dev/README.md

https://www.npmjs.com/package/fable-providers-graphql

Для свагера было бы круто такое

Artemy
29.03.2018
22:33:35
Знаю, что в Вебшарпере тоже какие-то провайдеры есть из FSharp.Data

?‍?
30.03.2018
03:10:18
Никакими.
Тогда как делаете цитаты когда?

Klei
30.03.2018
03:18:01
Тогда как делаете цитаты когда?
Заворачиваем в: ` - для однострочного кода. ``` - для многострочного.

Pavel
30.03.2018
04:28:41
Для свагера было бы круто такое
Есть же провайдер для сваггера, не уверен, что с Fable совместимо

Страница 526 из 772