@Fsharp_chat

Страница 183 из 772
Nikolay
31.05.2017
11:26:09
Смотрел suave io?
Там вроде не DSL было

Roman
31.05.2017
11:26:12
Роутинг по урлам там очень похож .

Friedrich
31.05.2017
11:26:14
@the_RAMZAY Это erased провайдер, там нет никаких настоящих типов.
Я не уверен, кстати, что во время компиляции нельзя этот тип вытащить и как-нибудь использовать. Может, и можно.

Roman
31.05.2017
11:26:47
Там вроде не DSL было
DSL это все равно фции

Google
Aleksander
31.05.2017
11:29:19
commands { command "/start" { .... } }
+1, тоже о похожем думал

Anton
31.05.2017
11:30:46
@neftedollar типы в общем там есть, но как только их вытягиваешь через свойство - сразу же "красным" становится тип sqlProvider'а

магия





Roman
31.05.2017
11:31:36
Там вроде не DSL было
Я к тому что можно было бы описать фцию типа parseMessage<'t> str = // тут парсишь строку в нужный тип, например обычным сопоставлением, типа match str with | "/start" -> MyCommandDU.Start |> Some | "/forget" -> Forget |> Some | ParseCommand<'t option> cmd -> cmd | _ - > None

Anton
31.05.2017
11:31:38
М - магия



То ли я дурак... То ли сани не едут.

Evgeniy
31.05.2017
11:34:21
@the_RAMZAY Зачем тебе эти типы нужны?

Anton
31.05.2017
11:34:47
@gsomix сейчас пока не нужны. Но вот вдруг я захочу dto ?

я бы использовал эти типы как dto

Evgeniy
31.05.2017
11:35:15
Но это не DTO типы.

Google
Evgeniy
31.05.2017
11:35:43
Это не настоящие типы, в них ничего нельзя хранить, их нельзя использовать во внешних сборках.

Anton
31.05.2017
11:36:09
ну, я бы создал тип для dto, внутри которого был бы этот тип, и через него к примеру расширял dto, что бы не писать руками всё и вся

Roman
31.05.2017
11:36:27
Это не настоящие типы, в них ничего нельзя хранить, их нельзя использовать во внешних сборках.
Но можно же. Я так не делал, а Павел Хиротиненко так делал посстоянно

Anton
31.05.2017
11:36:43
я понимаю, что они не настоящие - дак вот я пытаюсь их сделать настоящими.

скопипастить их поля, так сказать.

Evgeniy
31.05.2017
11:37:06
@neftedollar Что делал и как?

@the_RAMZAY Ты уверен, что там есть "поля"? :)

Anton
31.05.2017
11:37:43
а почему бы и нет?

я же их вижу через тот же sql

Seq.iter

Roman
31.05.2017
11:38:04
@neftedollar Что делал и как?
Насколько я понял отдельный fsproj с тайппровайдером и его референсил из c# проекта и использовал как орм

Evgeniy
31.05.2017
11:38:06
@the_RAMZAY Ты уверен, что это "поля"? :)

Anton
31.05.2017
11:38:33
@neftedollar да, он такое рассказывал у себя в презенташке.

Roman
31.05.2017
11:38:46
Anton
31.05.2017
11:38:59
@gsomix нууу, эм, а как тогда это работает? db.Users |> Seq.iter (fun u -> printfn "%A" u.Name)

Roman
31.05.2017
11:39:00
@neftedollar да, он такое рассказывал у себя в презенташке.
А то я от Павла ни одной презентации не видел

Anton
31.05.2017
11:39:15
а, я попутал людей

Evgeniy
31.05.2017
11:39:23
@the_RAMZAY С помощью магии компилятора.

Anton
31.05.2017
11:39:29
просто @nevoroman тоже такое у себя делал.

Evgeniy
31.05.2017
11:40:27
@neftedollar @the_RAMZAY Erased провайдер не генерирует настоящих типов, их не видно в C#. Скорее всего он писал типы-обертки, функции и так далее, чтобы заменить этим ORM.

Google
Anton
31.05.2017
11:41:00
интересно послушать, как @nevoroman это делал.

Roman
31.05.2017
11:41:00
@nevoroman Делал. Правда, не от хорошей жизни, как и говорил - это была олимпиада и там нельзя было EF использовать (по странным причинам), так что я вот так хачил

Через функции, да

Anton
31.05.2017
11:41:17
расскажи подробней =)

Ты пользовался только тем, что нагенерил тайп-провайдер ? ( по части энтитей)

Roman
31.05.2017
11:42:00
Я не вспомню деталей, честно - это был адский ад со страшным г... не особо качественным, в общем, кодом

Anton
31.05.2017
11:42:32
Ну, меня это прямо вдохновило =)

мол - а зачем мне тогда EF вообще ? =)

Roman
31.05.2017
11:42:52
Не. EF это мощный комбайн

Vasily
31.05.2017
11:42:54
change tracking

Хотя в большинстве случаев от ORM нужен только маппинг сущностей и вменяемые селекты

Roman
31.05.2017
11:43:25
Провайдеры - это в основном альтернатива написанию оберток для типов + их автоматический маппинг, не более того

Anton
31.05.2017
11:44:01
@nevoroman я про свои корманные проекты, и вот такие утилетарные проекты, как сейчас у меня. EF тут выглядит очень толсто.

Roman
31.05.2017
11:44:04
Но да, когда нужен только маппинг и селекты, этого достаточно. И сильно помогает, когда не хочется тянуть EF просто чтобы слегка поковыряться в данных

Да, в небольших пет проектах провайдеры идеальны

Такие проекты вообще на F# приятно делать, быстро и удобно выходит. У меня, во всяком случае.

Anton
31.05.2017
11:44:48
Кстати ты меня прямо воодушивил на Дата Сцаинс =)

Roman
31.05.2017
11:45:05
Радует, в том и цель :)

Google
Vasily
31.05.2017
11:50:40
Я вот думаю, как f# затащить в кровавый энтерпрайз, точнее, где он там уместен

Pavel
31.05.2017
11:51:52
везде :)

Igor
31.05.2017
11:53:42
А поясните человеку, который не разу не щапал провайдеры: 1. Как часто перегенерируется код провайдеров? 2. Что бывает если, он не нашел исходные данные, по которым генерит 3. Как они влияют на скорость сборки?

Vasily
31.05.2017
11:54:08
1. При каждой компиляции 2. Ошибка компиляции 3. Замедляют

Friedrich
31.05.2017
11:54:29
При каждой компиляции, но и в дизайн-тайме тоже

То есть пока пишешь код в студии.

Vasily
31.05.2017
11:54:55
Поэтому, например, в продакшн базе с тайп провайдером будет тяжко. Там надо, чтобы билд сервер имел метаинформацию о базе

Anton
31.05.2017
11:55:07
@angmarr если ввести не верные данные - оно по ctrl+s упадёт с ошибками =)

Vasily
31.05.2017
11:55:20
Вот это, кстати, одно из препятствий на пути к энтерпрайзу

Потому как там надо много всего невидимого сделать, чтобы оно нормально заработало

Friedrich
31.05.2017
11:55:52
Я хотел на билдсервере вот так изворачиваться, через сериализованную структуру в файлике

Roman
31.05.2017
11:56:33
Поэтому, например, в продакшн базе с тайп провайдером будет тяжко. Там надо, чтобы билд сервер имел метаинформацию о базе
Но мне казалось, что нет. Он генерит типы в design time, а если в рантайме поменялась модель, например исчезло поле. То при обращении к нему случится ошибка

Vasily
31.05.2017
11:56:45
Поэтому все эти коннекшн стринги с точки зрения энтерпрайза - курам на смех

Igor
31.05.2017
11:58:07
Это получается как со scala-макросами, еще надо научить IDE понимать их (ее фронтенд-компилятор). У Scala это не получилось до сих пор, постоянно народ жалуется что красный код.

Evgeniy
31.05.2017
11:59:02
Так вроде IDE нормально понимают провайдеры.

Igor
31.05.2017
11:59:17
Evgeniy
31.05.2017
11:59:36
Все, которые на FCS работают.

Google
Vasily
31.05.2017
12:00:04
С провайдерами засада одна всего - у тебя на билде окружение одно, а в продакшне другое

И как тут добиться консистентности - задача не из простых

Igor
31.05.2017
12:00:30
Anton
31.05.2017
12:02:02
хм, у меня в Rider'е всё ок c type provider'ом

Pawel
31.05.2017
12:06:42
Это получается как со scala-макросами, еще надо научить IDE понимать их (ее фронтенд-компилятор). У Scala это не получилось до сих пор, постоянно народ жалуется что красный код.
С т.з. IDe сгенерированный тайппровайдером контент - самый обычный класс net с вложенными классами. А чтобы макрос понять, надо всё откомпилировать

Roman
31.05.2017
12:07:11
в общем я бы сказал так, что тайппровайдеры не всегда подходят для разработки. Но например json провайдер вполне подходит.

Igor
31.05.2017
12:07:13
хм, у меня в Rider'е всё ок c type provider'ом
Я так понял FCS включает в себя и частично фронтенд компилятор. Если так подумать, то в Rider ничего своего и не сделали. Те расчитавать что JB напилит своего функционал, как в R# для C# не приходится.

Roman
31.05.2017
12:08:44
Я так понял FCS включает в себя и частично фронтенд компилятор. Если так подумать, то в Rider ничего своего и не сделали. Те расчитавать что JB напилит своего функционал, как в R# для C# не приходится.
в F# это не нужно наверное. Но и я думаю в jetBrains не так уж и много пользуются F#, чтоб понимать что действительно нужно разработчикам. Позже по фидбекам добавят, если саймон не решится)

Evgeniy
31.05.2017
12:08:58
@angmarr Поживем, увидим.

Я очень надеюсь, что в Rider будет хорошая поддержка F#.

Igor
31.05.2017
12:09:35
Меня вообще VSCode устраивает с головой (по крайней мере памяти жрет гораздо меньше, чем продукты JB)

eugene
31.05.2017
12:16:52
Дратути. Можно же глупые вопросы задавать?

Evgeniy
31.05.2017
12:17:09
@welltyped Привет. Можно.

eugene
31.05.2017
12:17:49
Я пытаюсь создать проект на F# с помощью dotnet. Иду по этой инструкции https://github.com/dotnet/docs/blob/master/docs/fsharp/tutorials/getting-started/getting-started-command-line.md и не получается.

Evgeniy
31.05.2017
12:18:54
Что именно не получается?

eugene
31.05.2017
12:19:42
Сразу после добавления Library в solution, нужно выполнить dotnet restore и потом dotnet build. dotnet restore сообщает, что: /usr/local/share/dotnet/sdk/1.0.4/NuGet.targets(97,5): warning : Unable to find a project to restore! и dotnet build валится: /Users/ak3n/Develop/fsharp-abt/src/Library/Library.fsproj.metaproj : error MSB4025: The project file could not be loaded. Could not find file '/Users/ak3n/Develop/fsharp-abt/src/Library/Library.fsproj.metaproj'. По путям видно, что у меня os x. dotnet ставил с сайта microsoft.

Evgeniy
31.05.2017
12:22:05
@welltyped dotnet sln add src/Library/Library.fsproj Сделал?

eugene
31.05.2017
12:22:22
Все по инструкции.

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