@Fsharp_chat

Страница 497 из 772
Pavel
06.03.2018
08:02:47
однако... давно C# не ковырял. забыл уже всё

Artemy
06.03.2018
08:03:04
До этого как-то не задумывался о разнице значений этих двух слов

Anna
06.03.2018
08:03:44
До этого как-то не задумывался о разнице значений этих двух слов
Вот-вот. Минутка английского в чате по F# определёно удалась

Pavel
06.03.2018
08:07:10
А где бы найти человека, который умеет в Rx, чтобы пообщаться?

Google
Igor
06.03.2018
08:12:46
@reactivex ну еще можешь worldbeater поспрашивать конкретно по RX в C# чатах (он опять ливнул)

Roman
06.03.2018
08:21:17
А где бы найти человека, который умеет в Rx, чтобы пообщаться?
А что в Rx интересует? Там вроде хорошая документация.

Pavel
06.03.2018
08:21:18
И есть ли у кого ссылка на C# чат? Или Rx-слэк, можно английский

Как IDisposable композить правильно, хотел спросить.

Tony
06.03.2018
08:22:26
Pavel
06.03.2018
08:24:24
var client = new Client(); using (client.GetEntities().Subscribe(Console.WriteLine)) { } Хотелось бы, чтобы этот клиент создавал соединение с сервером (TCP/WebSocket), а когда вызывается GetEntities - отправлял бы запрос на подписку и слушал его.

Собственно хотелось бы, чтобы коннекшн реюзался, когда подключаются новые, и закрывался, когда никто не слушает

Roman
06.03.2018
08:29:02
Так это через Observable.Create, затем Publish.RefCount

Вроде так было. Подписка будет диспозиться когда последний подписчик отпишется

Pavel
06.03.2018
08:30:04
Да, это так, у меня ресурс первый - IDisposable, не понимаю как GetEntities правильно написать

Bonart
06.03.2018
08:30:28
Есть метод Observable.Using()

Pavel
06.03.2018
08:30:40
Сорри, что офтоп, подозреваю, что тут более умные люди, чем в рандомном сишарп чятике

Google
Pavel
06.03.2018
08:30:48
Bonart
06.03.2018
08:32:45
Вот он и используется, если надо пошарить некий ресурс на время существования Observable

Pavel
06.03.2018
08:33:19
Мне на один ресурс надо создать несколько новых подписок

Tony
06.03.2018
08:34:53
Вот он и используется, если надо пошарить некий ресурс на время существования Observable
но он вроде холодный обзервабл превращает в горячий, то есть все подписчики видят один и тот же стрим. а надо, я так понял, создавать новый стрим/запрос на каждого нового подписчика, но при это реюзать сокет. мне кажется это скорее не в Rx тут надо копаться, а в организации доступа к сокету.

Pavel
06.03.2018
08:35:25
Да не, это просто локом решится, ща код покажу



Там эмуляция дочернего подключения идет, но смысл такой

Как с Observable.Using подлезть тут - я не понял

^^^ код работает, мне не нравится Merge с Never

Roman
06.03.2018
08:41:18
В GetEntities используешь Observable.Create. При создании подписки открываешь канал. Возвращаешь диспозабл в котором закрываешь канал. Вешаешь на него Publish.Refcount

Pavel
06.03.2018
08:43:12
Ну так и сделано, собственно, создается общий на всех обсервабл, в GetEntities Observable.Create будет

Мне не нравится, что client - переменная, и что мержить приходится c .Never, иначе оно сразу закрывается

Roman
06.03.2018
08:44:34
CreateClient вообще не нужен

Pavel
06.03.2018
08:45:41
Погодь, а как вторую подписку открыть такую же, которая бы сокет реюзала?

В смысле тот же экземпляр сокета, а не новый открывала



LogOnlyErrors() - подписывается, и в консоль все пишет

Другой пример - у тебя есть zip-файл с текстами, нужно уметь их параллельно и безопасно прочитать.

(предположим, что ZipFile - потокобезопасный)

Google
Pavel
06.03.2018
08:49:49
И хочется отдать в таком же виде, а файлы - как Observable

И чтобы оно открывалось при первой подписке, и закрывалось в конце

Имена файлов, к примеру, приходят параметрами

Evgeniy
06.03.2018
09:20:41
Привет!

> k_cieslak > wow! I'm running NUnit tests! > and my test explorer is working with them > k_cieslak > there is some chance that it will be "commercial" product

Evgeniy
06.03.2018
10:24:22
Ionide Enterprise. ?

Friedrich
06.03.2018
13:15:29
И многие ли тут тащат ф в прод?)
А я притащил, например! Немножко :)

В статье не хватает ссылочки на этот канал. Ну или хотя бы на сайт.
Была там ссылочка, мудераторы хабра не пропустили!

Alex
06.03.2018
13:23:12
Dotnet core 2

Most
06.03.2018
13:23:27
Alex
06.03.2018
13:23:36
Какие ui использцете для ф?

Знаю winforms gtksharp eto.forms a avalonia

Eto вощможно не рвботает под коре

Friedrich
06.03.2018
13:25:13
поподробнее)
Ну, мне вот была нужна штука для оффлайн-анализа логов (логов много, по 1 ГБ в день бывает). Я и набросал на F# быстренько, мотивируя тем, что будет существенно меньше кода, чем на C#. В таком виде и поддерживаем.

Да, это очень немного, но хоть что-то :)

Не считая того, что у меня научная работа на F#. Там я сам себе начальник, пишу на чём вздумается.

Most
06.03.2018
13:25:58
и как по скорости работы?)

Friedrich
06.03.2018
13:26:23
Достаточно, чтоб не париться по этому поводу.

Evgeniy
06.03.2018
13:26:25
Alex Avalonia точно работает под неткором, но пока никаких функциональных оберток для нее нет.

Google
Friedrich
06.03.2018
13:26:58
Какие ui использцете для ф?
Я иногда пытаюсь в геймдев, и потому делаю «UI» на MonoGame!

Alex
06.03.2018
13:27:09
Насколько удобнее winforms?

Friedrich
06.03.2018
13:28:04
Насколько удобнее winforms?
Смотря по каким критериям сравнивать. На мой взгляд, Winforms по любым критериям, кроме «программирования мышкой», с треском проигрывает всем другим озвученным технологиям.

Тем более, что на F# мышкой особо не попрограммируешь даже на Winforms — тулинг в студии слабоват.

Alex
06.03.2018
13:29:06
Смущает необходимост. Использовать классы. Нарушает прициаы фп

Friedrich
06.03.2018
13:29:31
Ну, к счастью, F# — не чисто функциональный язык, и позволяет использовать то, что требуется для текущей задачи.

Нужны классы — будем юзать классы.

Alex
06.03.2018
13:30:19
Например suave позволяет писать в чисто фп стиле

Нужен чистый байндинг к авалонии или гтк

Friedrich
06.03.2018
13:30:52
Смущает необходимост. Использовать классы. Нарушает прициаы фп
А вообще, если интересны такие вещи, я советую посмотреть на Gjallarhorn (в недавней статье на хабре можно посмотреть обзор), и ещё вот на эту серию материалов: http://fsprojects.github.io/FSharp.Desktop.UI/

Alex
06.03.2018
13:31:13
Это только вайн

Friedrich
06.03.2018
13:31:32
Что?

Alex
06.03.2018
13:31:48
Win only

Friedrich
06.03.2018
13:31:56
Что Win only?

Alex
06.03.2018
13:32:17
Нужен кроссплатформ

Friedrich
06.03.2018
13:32:26
Я согласен, что нужен.

А про что ты говоришь, что оно Win only?

Alex
06.03.2018
13:32:38
http://fsprojects.github.io/FSharp.Desktop.UI/

Friedrich
06.03.2018
13:32:47
А ты материалы читай!

Там описывается, как ты принцип можешь применить к любому UI-фреймворку.

Google
Friedrich
06.03.2018
13:33:23
Во, вот тут! https://github.com/dmitry-a-morozov/fsharp-wpf-mvc-series/wiki

Evgeniy
06.03.2018
13:33:37
Нужно бы Gjallarhorn.Bindable портировать на Avalonia.

Vasily
06.03.2018
13:33:45
Не нужно

Плохая это практика

Биндинги в коде

Friedrich
06.03.2018
13:34:19
В Elm-архитектуре биндинги в коде, и вообще всё в коде. И её хвалят.

Я согласен, что этот момент нужно обсуждать и искать минимально громоздкие решения.

Но прям вот так вот, что Gjallarhorn.Bindable вообще не нужно использовать — не могу согласиться.

Siarhei
06.03.2018
13:35:35
В Elm-архитектуре биндинги в коде, и вообще всё в коде. И её хвалят.
вкручивать dsl который это пофиксает ¯\_(ツ)_/¯

Alex
06.03.2018
13:36:10
Смотрел хорн статью не впечатлило не фп

Friedrich
06.03.2018
13:36:11
вкручивать dsl который это пофиксает ¯\_(ツ)_/¯
Ну да, у нас уже несколько человек примерно о таких вещах говорят. Увы, пока что никакого прототипа сделать не удалось, поэтому пока просто рассуждаем.

Alex
06.03.2018
13:36:39
Возможно стаиья такая

Friedrich
06.03.2018
13:37:02
Ну глянь ещё доки от Gjallarhorn — возможно, там с более простых примеров тебе более понятно будет.

Пока это единственный более-менее живой порт elm-архитектуры, которая, гм, кажется, представляет собой наиболее функциональный вариант для GUI?

Но я других вариантов не видал, так что, если знаете — делитесь!

Alex
06.03.2018
13:39:04
Надо попробовать, только начал ломать свое ооп. Простык вещи фп впечатляют

Bonart
06.03.2018
13:40:09
ООП надо не ломать, а встраивать :)

Evgeniy
06.03.2018
13:41:35

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