
Friedrich
05.06.2017
08:30:17
Ну то есть эффективно эта часть стандарта — мёртвая.

Klei
05.06.2017
08:46:42

Pawel
05.06.2017
11:47:20

Google

Pawel
05.06.2017
11:48:53
и в этом случае досвидания консистентность данных

Igor
05.06.2017
11:50:49


Pawel
05.06.2017
11:54:03
у меня MailboxProcessor - очень ненадёжная и непредсказуемая такая штука на практике. Любое предположение о его работе (даже казалось бы самое очевидное), надо подтверждать тестами (как правило сложными), иначе - грабли. Достоинство - намного проще чем akka net
https://github.com/Dolfik1/AvaloniaDSL/blob/master/DSL/Main.fs
осталось прописать все варианты - для каждого класса, который есть в ХАМЛе, сделать отдельный "билдер", в котором прописать все его проперти, ивенты и команды, а также все возможные свойства зависимостей, которые могут этот класс расширять, потом прописать все стандартные конверторы. И только псоле этого можно будет засучив рукава садится за реализацию темплейтов разметки, стилей и датабиндинга. Легион индусов в помощь и good luck!


Anton
05.06.2017
12:18:41
@nevoroman появился интересный вопрос по json type provider. Предыстория: трепался я вчера со своим другом с Брестского Епама, я ему намедне скормил твой прошлогодний доклад. Ему, C# девелоперу понравились тайп провайдеры, он решил подумать, как они ему могу помочь на проде, но упёрся в то, что у них сервак не отправляет некоторые поля, если они пустые, в целях оптимизации. Он вот может сейчас отдать их, а через 10 милисекунд уже не отдавать.
ВОПРОС: как поведёт себя в такой ситуации json TypeProvider, когда поля то приходят, то не приходят ?

Vasily
05.06.2017
12:20:33
Я думаю, надо задать json, где все поля указаны, при создании провайдера

Roman
05.06.2017
12:21:03
Так себе ведет. Но можно локально сохранить "полный" json и обращаться к нему

Anton
05.06.2017
12:21:15
Но они почти рандомные. Зависят от множества факторов: страна, настройки юзера, наличие контента и т.д

Roman
05.06.2017
12:21:40
Ну, вообще я не уверен, что это нормальная практика при работе с JSON
Но да, вести будет так себе. Но тут и с обычными парсерами могут возникать проблемы, если JSON ведет себя таким образом

Vasily
05.06.2017
12:22:13
Тут скорее про оптимизацию пропускной способности

Anton
05.06.2017
12:22:22
У них есть кейсы в коде, мол если пришли проперти, значит одна вьюха, если не пришли, то другая, если пришла часть, то третья и так далее на все кейсы.

Vasily
05.06.2017
12:22:43

Google

Roman
05.06.2017
12:22:53

Anton
05.06.2017
12:23:03
Неа, это оптимизация, вполне здравая. Сервер не отправляет 100500 пропертей.

Vasily
05.06.2017
12:23:06
Модель данных должна быть одна

Anton
05.06.2017
12:23:11
если они пустые - зачем их слать?

Vasily
05.06.2017
12:23:15
Другой вопрос, что не все надо отправлять

Roman
05.06.2017
12:23:33

Vasily
05.06.2017
12:23:40
Ну дык вот, ответ на вопрос - взять полный json
Хотя, мнится мне, парни просто выбрали не тот формат хранения данных
Выглядит как словарь

Anton
05.06.2017
12:25:05
@nevoroman ну это прожект из Брестского Епама. Можешь поинтересоваться думаю о подробностях и может подготовить чего из этого кейса на дотнексте, мы бы послушали решение для этой задачи. Мне он описал минимально, что бы не спойлерить технические подробности по понятным причинам.

Vasily
05.06.2017
12:25:05
Но, поскольку они не хотят оверхеда

Roman
05.06.2017
12:25:05
Вот да. Что-то мне подсказывает, что там летают здоровенные словари в JSON, что как-то так себе затея

Aleksander
05.06.2017
12:25:45
Как вариант - взять DTO, AutoFixture и сгенерировать полностью заполненный json

Vasily
05.06.2017
12:26:05
То пишут
{"a:"b"}
вместо {[{Name:"a",Value:"b"}]}

Nikolay
05.06.2017
12:26:13

Roman
05.06.2017
12:26:20

Nikolay
05.06.2017
12:26:23
Предпочтительнее первое

Anton
05.06.2017
12:26:49
@nevoroman хм, мне он говорит, что он часто работает на проектах с такими серверами.

Vasily
05.06.2017
12:27:03
Jser, шоле?

Pawel
05.06.2017
12:27:06
@nevoroman появился интересный вопрос по json type provider. Предыстория: трепался я вчера со своим другом с Брестского Епама, я ему намедне скормил твой прошлогодний доклад. Ему, C# девелоперу понравились тайп провайдеры, он решил подумать, как они ему могу помочь на проде, но упёрся в то, что у них сервак не отправляет некоторые поля, если они пустые, в целях оптимизации. Он вот может сейчас отдать их, а через 10 милисекунд уже не отдавать.
ВОПРОС: как поведёт себя в такой ситуации json TypeProvider, когда поля то приходят, то не приходят ?
надо использовать не хелувордный jsonprovider, а нормальную библиотеку сериализации json. напрмиер мою) Объявляешь тип проперти, которой может не быть в ответе сервака, как Optional. Разумная стратегия десериализации для таких типов - None by default. А то, что кому-то там ответ сервера не кошерный, так это не проблема сервера

Google

Anton
05.06.2017
12:27:40
Vasily виндовсфонщик
и замаринщик по совместимости

Vasily
05.06.2017
12:27:58
Хмм... ну там все ок должно же быть
проблема понятна в целом
Dictionary их спасет мб

Anton
05.06.2017
12:28:39
В общем вчера пол часа трепались про этот кейс. Я пообещал что спрошу у @nevoroman лично =)

Roman
05.06.2017
12:29:07
А я тут ничего интересного не отвечу, потому что юзаю провайдеры совсем в других кейсах :)
Мне-то они обычно нужны чтобы поковырять некоторое публичное api/датасет, где таких проблем не бывает

Anton
05.06.2017
12:29:45
@nevoroman у вас там никакого внутреннего Епамовского чатика нету ? Я могу просто его данные дать, мб он по точнее расскажет кейс, т.к наверное внутри компании вы можете же делиться подробностями продакшена.

Roman
05.06.2017
12:30:38
Да если ему интересно - пускай пишет, либо во внутреннем линке, либо в обычном скайпе, логин у меня там тот же

Anton
05.06.2017
12:31:03
хм, как ему написать тогда твои данные?
Ну, по которым он тебя может найти в вашем "внутреннем линке" ?

Roman
05.06.2017
12:35:32
Имени и фамилии вполне достаточно

Friedrich
05.06.2017
12:37:48

Vasily
05.06.2017
12:38:15
С моей точки зрения - очень спорно использование тайп провайдеров при десериализации
потому как сериализацию все равно на других типах придется писать
По идее должно быть что-то вроде 'TDto->'TSerialized

Friedrich
05.06.2017
12:39:33
Я их использую так: беру примеры формируемых документов, строгаю по ним провайдеры (получается местами стрёмно, но мне пофиг), а потом снаружи навешиваю фасад, типизированный уже в нормальных терминах.

Vasily
05.06.2017
12:39:34
И наоборот

Google

Vasily
05.06.2017
12:40:00
А вот TSerialized уже сериализовывать

Friedrich
05.06.2017
12:40:14
https://github.com/ForNeVeR/Tesla.Csxcad/blob/develop/Tesla.Csxcad/CsxWriter.fs — вот так, например (преобразовалка из "красивых" типов в провайдеровые)

Vasily
05.06.2017
12:40:24
Точнее, не TSerialized, а некий набор трансформов

Roman
05.06.2017
12:40:42

Friedrich
05.06.2017
12:40:43
Написать такое преобразование намного проще и надёжнее, чем прямое из доменных типов сразу в JSON/XML.

Vasily
05.06.2017
12:42:05
let metals =
properties
|> Utils.ofType<Metal>
|> Seq.map makeMetal
|> Seq.toArray
let materials =
properties
|> Utils.ofType<Material>
|> Seq.map makeMaterial
|> Seq.toArray
Чет жесско

Friedrich
05.06.2017
12:43:05
Нормас, там этих пропертей обычно от 10 до 100 штук.
Мне ж это для продакшена, а не для академической красоты :)

Vasily
05.06.2017
12:43:18
копипаста же
В одну функцию же можно свернуть

Friedrich
05.06.2017
12:43:57
Можно.

Anton
05.06.2017
12:45:19
@nevoroman @fvnever скорей всего я может не правильно его понял, и там совсем иначе.
@nevoroman по этому я и говорю, мол обсудите между собой, внутри епама =)
@nevoroman если что, тебе будет писать Евгений Сампир

Roman
05.06.2017
12:47:09
Окей :)

Anton
05.06.2017
13:03:07
@nevoroman а ещё я нечайно твой доклад всем, с кем общаюсь из одногруппников скинул. Уж очень меня воодушивил он на подвиги.
Хочется ещё попробовать R провайдер, нужно бы найти для этого время.

Nikolay
05.06.2017
13:15:56
https://learn-anything.xyz/programming/programming_languages/f_sharp
:)

Google

Vasily
05.06.2017
13:17:39

Nikolay
05.06.2017
13:26:31
Кстати моя issue потихоньку двигается: https://github.com/Microsoft/visualfsharp/issues/3141#issuecomment-306186126

Roman
05.06.2017
13:38:11
Забавно. Обнаружил что в модуле Option появились новые функции. Типа ifElse, defaultValue и много других полезных, а документации по ним не нашел ни в msdn, ни где то ещё.

Evgeniy
05.06.2017
13:38:42
Не успели написать.

Roman
05.06.2017
13:39:01
Понятно что документация особо не нужна, но всё же странно.

Evgeniy
05.06.2017
13:39:28
https://github.com/fsharp/fslang-design/blob/master/FSharp-4.1/FS-1007-additional-Option-module-functions.md

Roman
05.06.2017
13:42:14
Получается что я F# 4.1 использую. Забавно, вроде третий должен быть. Завтра проверю.

Evgeniy
05.06.2017
13:42:59
Roman Или ты используешь какую-нибудь библиотеку с расширениями для option.
А в ситуации с документацией ничего странного нет. Пока мы сами не напишем, ее и не будет. :)

Roman
05.06.2017
13:43:46

Evgeniy
05.06.2017
13:47:21
Roman Не, Microsoft нам ничего не должны. Документация у них, кстати, сейчас открытая.
https://github.com/dotnet/docs

Roman
05.06.2017
13:48:17

Anton
05.06.2017
13:56:27

Nikolay
05.06.2017
13:57:13

Pavel
05.06.2017
13:57:31
Mind map называется

Anton
05.06.2017
13:58:25
@Dolfik прикольно
^_^
https://learn-anything.xyz/mathematics/category_theory
А это оно само генерирует ?

Roman
05.06.2017
14:06:47

Anton
05.06.2017
14:10:37
«compilation to CUDA GPUs» ничоси