
Friedrich
05.04.2017
09:34:46
Мб распределённые ЭМП-вычисления запилим?

Evgeniy
05.04.2017
09:36:04
Давай. @fvnever А у тебя есть, где распределять?

Friedrich
05.04.2017
09:36:23
Да, у меня есть где распределять.
Я в основном провожу расчёты на десктопе, но у меня же двенадцатиядерный сервер ещё.

Google

Friedrich
05.04.2017
09:36:42
Хорошо бы между ними распределить!

Evgeniy
05.04.2017
09:37:29
Подумаю над этим, когда с учебой разберусь.

Friedrich
05.04.2017
09:37:58
Ты там дописал свой философский трактат? :)

Evgeniy
05.04.2017
09:38:15
Нет еще. А дедлайн прошел!

Friedrich
05.04.2017
09:38:25
Давай-ка берись за ум!

Evgeniy
05.04.2017
09:38:42
А не поздно-то? :)

Friedrich
05.04.2017
09:38:51
Браться за ум никогда не поздно.
У меня тут чото тоже навалилось: надо магистрантов к конференции готовить, тезисы им там писать всякие, отзывы.
Но я держусь. И ты держись!
И дописывай трактат.

Evgeniy
05.04.2017
09:42:13
https://hh.ru/vacancy/16812547

Friedrich
05.04.2017
09:43:45
> Разработка ведётся на новом кроссплатформенном языке программирования, сочетающем в себе особенности функциональных и императивных языков (и в чём-то похожем на такие языки как F#, O’Caml Haskell, Scala)
Занимательно.

Evgeniy
05.04.2017
09:44:15
Это VB поди!

Google

Evgeniy
05.04.2017
09:44:18
:3

Friedrich
05.04.2017
09:44:37
VB далеко не нов.

Evgeniy
05.04.2017
09:45:35
Ладно. Что это может быть?
@fvnever Да, я думаю, если аккуратно покрутить формулы FDTD, то можно что-то распределенное запилить.

Friedrich
05.04.2017
10:06:59
Я чото думал, что все эти MBrace сами за меня всё распределят, без кручения.
FDTD же мапится на довольно простые операции над массивами.

Nikolay
05.04.2017
10:08:04
А есть какие-нибудь репозитории, где можно посмотреть примеры правильной работы с БД в F#
Ну всмысле что-то типа Repository pattern, только в F#

Friedrich
05.04.2017
10:09:15
Вот этот модуль QuoteLogic, считай, репозиторий и есть.

Evgeniy
05.04.2017
10:10:45
@fvnever Я думаю, что оно распределит, но не самым эффективным образом.

Roman
05.04.2017
10:10:48

Evgeniy
05.04.2017
10:10:56
Можно распределить с большим количеством коммуникаций, а можно с малым.

Friedrich
05.04.2017
10:10:58

Roman
05.04.2017
10:11:43

Friedrich
05.04.2017
10:11:50

Evgeniy
05.04.2017
10:11:53
@fvnever Например, в обычной реализации FDTD из книжки ячейки хитро завязаны друг с другом.

Roman
05.04.2017
10:11:57
А митапы надо бы сделать. Даже в Минске они есть

Nikolay
05.04.2017
10:11:58

Friedrich
05.04.2017
10:12:27

Google

Roman
05.04.2017
10:12:28

Friedrich
05.04.2017
10:12:49
Мне было скучно реализовывать все те же обычные паттерны на F#.

Evgeniy
05.04.2017
10:14:05
@Dolfik @fvnever Реализовал бы Reader?

Nikolay
05.04.2017
10:14:28

Friedrich
05.04.2017
10:14:52
К Reader та же самая претензия.

Nikolay
05.04.2017
10:14:55
Хотя могу ошибаться, ибо пока в ФП не очень

Friedrich
05.04.2017
10:15:20
Можно какой-то один общий контекст таскать с собой, из которого всё резолвить.

Roman
05.04.2017
10:15:25

Friedrich
05.04.2017
10:15:37
Но я не уверен, как это правильно сделать, не прибегая к ООПшным паттернам.
И нужно ли это делать, намеренно их избегая, например :)

Evgeniy
05.04.2017
10:16:05
@Dolfik Да, никто не мешает заюзать ООП.

Roman
05.04.2017
10:16:08

Nikolay
05.04.2017
10:16:20
class Repository
{
private DbContext _context;
public Repository(DbContext context)
{
_context = context;
}
public List<MyData> GetSomeData()
{
...
}
}

Evgeniy
05.04.2017
10:16:30
ФП в малом, ООП в большом. Как ЦарьПалис учил. :)

Roman
05.04.2017
10:16:35

Friedrich
05.04.2017
10:16:41
А в экспериментальном проектике можно и что-то более тонкое посмотреть, чем Repository pattern :)
Хотя я не уверен, чем его заменить.

Roman
05.04.2017
10:17:21

Google

Friedrich
05.04.2017
10:17:49
Ну то есть у меня вон там вот такой репозиторий. Без DI, просто создаём хардкоженный контекст и лезем в него.

Nikolay
05.04.2017
10:17:55
Вот пример репозитория, достаточно удобно с таким работать, например когда он через DI всё сам подтягивает, остаётся просто добавить в конструктор класса (для DI) и можно использовать Repository.GetSomeData в нужном месте, без создания контекста

Evgeniy
05.04.2017
10:17:57
@fvnever Кстати, palis -- это борьба. Поэтому тот чувак -- Царь борьбы?

Friedrich
05.04.2017
10:18:05
Или Цареборец.

Nikolay
05.04.2017
10:18:10
Ну либо через одиночку

Evgeniy
05.04.2017
10:18:12
Вполне.

Friedrich
05.04.2017
10:18:29

Nikolay
05.04.2017
10:18:44
Ну, репозиторий при таком подходе в целом удобен

Friedrich
05.04.2017
10:18:54
Я делал более интерпрайзноватые проекты на F#, в которых использовал Unity DI (почему-то). Нормально выходит.

Nikolay
05.04.2017
10:19:17
Но вот про DI мне кажется это не совсем функциональный стиль

Roman
05.04.2017
10:19:24

Evgeniy
05.04.2017
10:19:29
Я, кстати, давно хотел прочитать.
http://blog.ploeh.dk/2017/01/27/from-dependency-injection-to-dependency-rejection/

Roman
05.04.2017
10:19:54

Friedrich
05.04.2017
10:19:58

Nikolay
05.04.2017
10:20:00
Значит используй DI
Я F# планировал учить, чтобы писать на нём в функциональном стиле, а не в ООП :)

Evgeniy
05.04.2017
10:20:18
@Dolfik Значит, ты пропустил суть F#. :)
Суть в том, чтобы и так, и сяк.

Roman
05.04.2017
10:20:27

Friedrich
05.04.2017
10:20:35
Да, это верно.

Nikolay
05.04.2017
10:20:43

Google

Friedrich
05.04.2017
10:20:44
Это я примерно вижу, как можно сделать.

Roman
05.04.2017
10:20:56

Evgeniy
05.04.2017
10:21:10
@Dolfik Это приводит к разным последствиям...

Friedrich
05.04.2017
10:21:15

Evgeniy
05.04.2017
10:21:50
@Dolfik В пределе у тебя будет или как в C#, или пародия на хаскель.

Friedrich
05.04.2017
10:21:50
Полиция F# энфорсит правильный стиль программирования!

Evgeniy
05.04.2017
10:23:59
@neftedollar Ок, хороший tl;dr. Так и не прочитаю же. :)

Roman
05.04.2017
10:24:27

Evgeniy
05.04.2017
10:24:46
@fvnever Полиция F# в слэке и твиттере работает. А мы на свободной земле! :)

Roman
05.04.2017
10:25:04

Friedrich
05.04.2017
10:25:32
:D

Nikolay
05.04.2017
10:28:50
В F# ещё комьюнити приятное :)

Evgeniy
05.04.2017
10:30:55
@Dolfik Кажется, есть разное ООП. Есть ООП про иерархии классов, а есть -- про интерфейсы, управление зависимости и сокрытие состояния. Например, если посмотришь на нормальную систему модулей в ML, то увидишь много знакомых из ООП вещей.
Можно считать, что ООП в F# -- это способ решать некоторые задачи, для которых в ML используются модули.
@fvnever А в getQuote, наверное, можно заюзать try with вместо Async.Catch.

Friedrich
05.04.2017
10:49:53
А try-with работает внутри async?

Evgeniy
05.04.2017
10:50:58
Да.
@fvnever SqlException хитрый.

Artemy
05.04.2017
11:08:46
Добрый день