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

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

Anna
06.03.2018
08:03:44

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

Pavel
06.03.2018
08:21:18
И есть ли у кого ссылка на C# чат? Или Rx-слэк, можно английский
Как IDisposable композить правильно, хотел спросить.

Andrey
06.03.2018
08:22:19

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
Мне на один ресурс надо создать несколько новых подписок

Bonart
06.03.2018
08:34:12

Tony
06.03.2018
08:34:53

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

Roman
06.03.2018
10:21:17

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

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

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.

Friedrich
06.03.2018
13:33:44

Vasily
06.03.2018
13:33:45
Не нужно
Плохая это практика
Биндинги в коде

Friedrich
06.03.2018
13:34:19
В Elm-архитектуре биндинги в коде, и вообще всё в коде. И её хвалят.
Я согласен, что этот момент нужно обсуждать и искать минимально громоздкие решения.
Но прям вот так вот, что Gjallarhorn.Bindable вообще не нужно использовать — не могу согласиться.

Siarhei
06.03.2018
13:35:35

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

Friedrich
06.03.2018
13:36:11

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