
Dmitry
10.07.2017
10:02:27
вот только чего у Маннинга такие чудовищные обложки?

Vasily
10.07.2017
10:02:39
Это Маннинг, детка

Dmitry
10.07.2017
10:11:48

Vlad
10.07.2017
10:15:14
лол)

Google

Vasily
10.07.2017
12:18:21
Кстати, посмотрел я тут выступления Влашина с NDC Oslo
Оба доклада норм
Нормальный такой входной уровень для C#\

Anton
10.07.2017
13:07:49
УРАААА, я научился использовать зависимые от shiny(R web framework) в F# R Type Provider
Решение прямо в лоб... Нагуглил очень случайно =)
R.wordcloud2(data = R.demoFreq) |> R.print
вот это самое print позволяет рендерить то, что приходит из модуля wordcloud2
Парни, куда бы это записать, что бы все знали ?

Evgeniy
10.07.2017
13:22:29

Igor
10.07.2017
13:24:32

Anton
10.07.2017
13:24:49
Там вроде рейтинг нужен
Что бы писать.
Я то могу запилить =)

Летучая
10.07.2017
13:25:04

Google

Anton
10.07.2017
13:25:30
@Worldbeater
https://cran.r-project.org/web/packages/wordcloud2/vignettes/wordcloud.html
оно видать js → R → F# =)

Igor
10.07.2017
13:26:44

Anton
10.07.2017
13:27:05
Окей, буду писать по вечерам статейку, потом сюда скину.
А сколько нас, которым про R внутри F# интересно ?
Я что-то туплю - не могу понять как выглядит тип demoFreq
хочу свои последовательности слов писать, а как их формировать не особо понимаю
немного ещё жс в ф чате: я писал вордклауд на d3.js
https://github.com/jasondavies/d3-cloud
соре за оффтопик
Через RStudio выяснил, что demoFreq это rda файл и как создать подобный через F# пока не очень понятно, или хотя бы тип, с такой же структурой данных, что бы скармливать в wordcloud2
внутри исходников wordcloud2 нашел вот такую интересну конструкцию...
if (class(data) == "table") {
dataOut = data.frame(name = names(data), freq = as.vector(data))
}
else {
data = as.data.frame(data)
dataOut = data[, 1:2]
names(dataOut) = c("name", "freq")
}
Опа, видать можно попробовать сделать на F# лист и замапить его на R лист

Roman
10.07.2017
13:57:49

Anton
10.07.2017
13:59:47
В общем, буду разбираться дома и писать статью параллельно.

Evgeniy
10.07.2017
16:40:03
> OO is an essential component for large F# projects, but I wouldn't call it OO first. The core of the language is still ML.

Pawel
10.07.2017
18:20:25
@angmarr ты если не ошибаюсь что-то подобное упоминал. Как бы ты делал такую модель в NoSQL - надо хранить партии готовой продукции (приборы). К партии относится ряд пропертей (дата создания и т.п.) и список приборов (у приборов овердофига пропртей). Я всё ни как не могу опредлиться - хранить приборы внутри документа с партией, либо для каждого создавать отдельный документ, а внутри партии держать список ID документов приборов. Профит второго варианта - можно безболезненно просматривать какие партии есть в репозитории (при этом не надо десериализовывать всю БД), но в этом случае структура БД усложняется.
буду делать это на F# в LiteDB

Igor
10.07.2017
19:11:42
А почему не хранить в приборах Id партии? И сколько будет приборов в одной партии?

Pawel
10.07.2017
19:21:55

Google

Pawel
10.07.2017
19:23:56

Igor
10.07.2017
19:25:51

Pawel
10.07.2017
19:27:36
думаю, и то, и то
или ты видишь какие-то проблемы с тем, чтобы хранить перекрёстные ссылки?

Igor
10.07.2017
19:32:46
Но это же возможная некончистентность.
В общем я делаю у себя по второму варианту, но без списка Id

Pawel
10.07.2017
19:37:10
Ок, понятно. Ну тут в любом случае консистентность обеспечивает прикладной код и есть много способов её похерить. Придётся писать много тестов как всегда.

Nikolay
10.07.2017
19:56:01
Посмотрел доклады по акторам, ещё более непонятно стало)

Roman
10.07.2017
20:07:19

Nikolay
10.07.2017
20:08:52

Roman
10.07.2017
20:09:55

Nikolay
10.07.2017
20:10:11
Во вторых, я не понял, нужна ли мне БД, или достаточно будет персистентности

Roman
10.07.2017
20:10:40

Nikolay
10.07.2017
20:11:07
Ну и в третьих, как вообще должна выглядеть архитектура, какие акторы и т.п.

Roman
10.07.2017
20:11:30

Nikolay
10.07.2017
20:11:40

Roman
10.07.2017
20:12:38

Nikolay
10.07.2017
20:13:16
Там же абстрагировно. Может как БД использоваться, так и локальное хранилище. И вот я имел ввиду, достаточно ли мне будет персистентности, или всё же нужна БД для хранения каких-то своих данных

Roman
10.07.2017
20:13:31
ноесли тебе нужно просто восстанавливать состояние чатика бе всяких сайдэффектов, то архитектура простая. Получил сообщение, обработал, сохранил.

Nikolay
10.07.2017
20:15:06
Ну мне бывает нужно в истории поковыряться, найти какие-либо сообщения

Google

Nikolay
10.07.2017
20:15:12
Или просто всю историю получить

Roman
10.07.2017
20:16:14
все удалил, т.к. понял что сложно.


Pawel
10.07.2017
20:29:39
Посмотрел доклады по акторам, ещё более непонятно стало)
Акка как, мне кажется, трудный фреймворк, но на самом деле всё действительно просто. Чтобы понять, тебе надо не доклады смотреть, а изучить модель акторов. Там смысл в том, что 1) есть изолированный иммутабельный стэйт 2) чтобы его изменить, нужно отправить сообщение, в которое вложены данные с описанием изменения состояния. Всё. Как это работает на практике легко понять 1) изучая erlang, на основе которого сделана акка 2) во фронтэнде redux. Или elm архитектура, что то же самое


Vasily
10.07.2017
20:33:37
Акка как, мне кажется, трудный фреймворк, но на самом деле всё действительно просто. Чтобы понять, тебе надо не доклады смотреть, а изучить модель акторов. Там смысл в том, что 1) есть изолированный иммутабельный стэйт 2) чтобы его изменить, нужно отправить сообщение, в которое вложены данные с описанием изменения состояния. Всё. Как это работает на практике легко понять 1) изучая erlang, на основе которого сделана акка 2) во фронтэнде redux. Или elm архитектура, что то же самое
С моделью акторов,имхо, просто нужен другой тип мышления.Мыслить не объектами,а сообщениями. Кстати, по идее,uml sequence diagram неплохо подходит для описания взаимосвязей между акторами.Ну а грамотно спроектировать систему на акторах -все же для меня уровень бог пока


Roman
10.07.2017
20:36:46
Акка как, мне кажется, трудный фреймворк, но на самом деле всё действительно просто. Чтобы понять, тебе надо не доклады смотреть, а изучить модель акторов. Там смысл в том, что 1) есть изолированный иммутабельный стэйт 2) чтобы его изменить, нужно отправить сообщение, в которое вложены данные с описанием изменения состояния. Всё. Как это работает на практике легко понять 1) изучая erlang, на основе которого сделана акка 2) во фронтэнде redux. Или elm архитектура, что то же самое
да redux похож


Pawel
10.07.2017
20:58:56
С моделью акторов,имхо, просто нужен другой тип мышления.Мыслить не объектами,а сообщениями. Кстати, по идее,uml sequence diagram неплохо подходит для описания взаимосвязей между акторами.Ну а грамотно спроектировать систему на акторах -все же для меня уровень бог пока
ты будешь смеяться, но в 80х годах всё это уже было в продакшене - и редакс, и акка, и даже рендеринг по необходимости, а не когда стейт меняется. Примерно в таком виде:
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
switch (message)
{
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// Here your application is laid out. For this introduction, we just print out "Hello, World!" in the top left corner.
TextOut(hdc, 5, 5, greeting, _tcslen(greeting));
// End application-specific layout section.
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
break;
}
return 0;
}
Но мужланы не поняли прекрасную идею, и обернули ее в богомерзкий ООП в виде Delphi. Эх, не было еще тогда ES6 и NPM, и светлых голов современных хипстеров))


Летучая
10.07.2017
21:02:23
ты будешь смеяться, но в 80х годах всё это уже было в продакшене - и редакс, и акка, и даже рендеринг по необходимости, а не когда стейт меняется. Примерно в таком виде:
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
switch (message)
{
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// Here your application is laid out. For this introduction, we just print out "Hello, World!" in the top left corner.
TextOut(hdc, 5, 5, greeting, _tcslen(greeting));
// End application-specific layout section.
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
break;
}
return 0;
}
Но мужланы не поняли прекрасную идею, и обернули ее в богомерзкий ООП в виде Delphi. Эх, не было еще тогда ES6 и NPM, и светлых голов современных хипстеров))
О, мы такое в универе писали. Буквально в прошлом году, а ты про 80-ые...

Pawel
10.07.2017
21:04:07


Vasily
10.07.2017
21:08:46
ты будешь смеяться, но в 80х годах всё это уже было в продакшене - и редакс, и акка, и даже рендеринг по необходимости, а не когда стейт меняется. Примерно в таком виде:
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
switch (message)
{
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// Here your application is laid out. For this introduction, we just print out "Hello, World!" in the top left corner.
TextOut(hdc, 5, 5, greeting, _tcslen(greeting));
// End application-specific layout section.
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
break;
}
return 0;
}
Но мужланы не поняли прекрасную идею, и обернули ее в богомерзкий ООП в виде Delphi. Эх, не было еще тогда ES6 и NPM, и светлых голов современных хипстеров))
Ну вот кстати да, вполне себе жизнеспособная вещь была
Она еще в винформах была даже
Еще,помню,в винапи была практика возврата нужного количества памяти под возвращаемую коллекцию


Pawel
10.07.2017
21:12:36
Ну вот кстати да, вполне себе жизнеспособная вещь была
А чего хорошего? концепция не взлетела. Не потому что не было first-class функций, и люди не заморачивались immutability. А потому что не скейлится на сложность. Как декомпозицию делать - непонятно. Поэтому дельфи зашло, и другие ООП-штуки про UI зашли. Которые про то, что стейт инкапсулирован с рендером в одну, реюзабельную, коробочку. А redux этот, как и акка, красивы только пока у тебя что-то простенькое.

Roman
10.07.2017
21:15:07

Pawel
10.07.2017
21:19:27
так остальное ещё хуже. ну и у elm другие плюсы есть по мимио elm архитектуры. Я пишу в основном WebGL, там сообщений не так много как в насыщенном UX приложении, для которого я предпочту mobx + react на typescript

Roman
10.07.2017
21:21:39

Evgeniy
11.07.2017
06:42:38
Dmitry Привет!

Vasily
11.07.2017
16:09:01
@avashkevich Привет!

Google

Nikolay
11.07.2017
17:37:37
А если в разных сборках два типа с одинаковым именем, как в F# это разруливать?
Типа using static

Roman
11.07.2017
17:38:16

Roman
12.07.2017
07:05:06
https://www.infoq.com/news/2017/07/microsoft-fsharp-build?utm_campaign=infoq_content&utm_source=infoq&utm_medium=feed&utm_term=global

Andrew
12.07.2017
07:08:46