@Fsharp_chat

Страница 636 из 772
Ayrat
08.07.2018
07:47:10
и не только :D ещё пугать людей страшными словами из теории множеств :D

Vasily
08.07.2018
07:47:41
Чё, умный, чоле?

Ayrat
08.07.2018
07:47:59
отож, у нас видишь какая отличная тема появилась для обсуждения

кроме акки

Google
Vasily
08.07.2018
07:48:22
Это да

Mikhael
08.07.2018
11:04:35
Смержили
В документации написано что это утилита только для проекта а не глобальная

Ayrat
08.07.2018
11:17:33
т.е. это rfc уже, не предложение?
пока что это RFC в репе Филипа Картера)

Ayrat
08.07.2018
11:19:38
т.е. это rfc уже, не предложение?
вот предложение https://github.com/fsharp/fslang-suggestions/issues/577

Честно говоря я чот пропустил предложение и обсуждение. Вот только на этапе RFC увидел.

т.е. скорее всего в этом виде и заедет

Roman
08.07.2018
11:23:27
Спасибо

вот предложение https://github.com/fsharp/fslang-suggestions/issues/577
Ещё не дочитал, но спойлерните плз. Предлагается возможность сделать type OptionNull = 'a | null with member ...?

Ayrat
08.07.2018
11:27:38
не, предлагается сделать синтаксис, который намекает на юнион тайп, но им не является, поскольку работает только в виде 'a | null и реализовать его через атрибуты

Google
Ayrat
08.07.2018
11:27:56
вся соль в интеропе с C#

Кстати, вот пропозал про юнион тайпы от создателя Fable https://github.com/fsharp/fslang-suggestions/issues/538

но его предложение с Type Erasure через обжекты

совсем он уже со своим JS обкурился)

Roman
08.07.2018
11:38:23
вот предложение https://github.com/fsharp/fslang-suggestions/issues/577
(well, numbers and booleans can be nullable too in JS, but usually solve that problem but putting the fingers in my ears and saying LALALA very loud :D

не, предлагается сделать синтаксис, который намекает на юнион тайп, но им не является, поскольку работает только в виде 'a | null и реализовать его через атрибуты
хм. Через атрибуты можно делать Set<Types> правда. Но жаль, что нельзя будет type NullableType = 'a | null with member this.toOption = match this with | null -> None | a -> Some a

И тогда получается что любые типы типа int | string | null могли бы иметь toOption

Хотя блин нет)

Тогда бы опшн был Option< int | string> а это уже отстой

Friedrich
08.07.2018
13:06:02
Choice<int | null, string | null> ???

Roman
08.07.2018
13:06:29
Vasily
08.07.2018
13:07:37
Анонимные du как они есть

Roman
08.07.2018
13:09:07
Анонимные du как они есть
Нет, все же разница есть

Daniel
08.07.2018
13:17:21
Не понимаю, чем string | int | null семантически отличается Choice<string | null, int | null>

И какая польза о такого Choice

Я имею ввиду - какая польза от того, что у нас у каждого варианта свой особенный null

Или вот string, string | null

Friedrich
08.07.2018
13:22:07
Точно! Надо делать Choice<string, int> | null

И написать побольше конвертеров туда и обратно ?

(шучу я, шучу, не надо так делать)

Google
Friedrich
08.07.2018
13:23:16
Ну, я искренне надеюсь, что до такого не дойдёт.

Daniel
08.07.2018
13:24:33
В дотти наконец дошли до нормальных sum types, надеюсь и F# дойдёт)

Roman
08.07.2018
13:31:00
Anna
08.07.2018
13:42:01
Ты все же смог продать себя JB?
Я считаю, что @fvnever настолько крут, что вопрос надо ставить по-другому: смогли ли JB уговорить его ?

Вексельберг
08.07.2018
16:45:44
Ayrat
08.07.2018
21:04:29
Не понимаю, чем string | int | null семантически отличается Choice<string | null, int | null>
тут должна быть реклама https://t.me/fsharp_flood, в котором успели обсудить и вопрошаемую разницу, и реализации в рантайме, и матан

Владислав
08.07.2018
22:02:13
кто-нибудь дружил giraffe + ef core?

ну или лучше если сказать ef core + F#

Vasily
08.07.2018
22:12:26
А там что-то сложное с точки зрения подружить?

Владислав
08.07.2018
22:17:17
та я вот так же думал

а в итоге миграцию создает, но таблиц в базе нет (только migrations history)

Vladimir
09.07.2018
05:22:34
Я тоже пробовал) миграции руками правил по примеру сишарпа

Но в итоге самое худшее это запросы делать

Так что советую сразу даппер

Bonart
09.07.2018
05:33:13
Так что советую сразу даппер
Сразу linq2db. Если конечно нет острого желания писать sql ручками

Vladimir
09.07.2018
05:39:38
Надо глянуть)

Но если он не поддерживает диалекты то все равно не хватит

Vasiliy
09.07.2018
05:47:39
Но если он не поддерживает диалекты то все равно не хватит
Linq2db норм. Поддерживает кучу провайдеров, только важно выставлять версию sql сразу, а то будет генерировать sql 2008

Vladimir
09.07.2018
06:01:11
Умеет апсерт делать?

Google
Vasiliy
09.07.2018
06:03:33
Умеет апсерт делать?
Это все же надо у них посмотреть. Я с mssql работаю.

У mssql есть merge и linq2db его поддерживает

Vladimir
09.07.2018
06:11:28
Спасибо, тогда как попробую- отпишусь)

Вексельберг
09.07.2018
09:20:04
Кто вебшарпер юзает? Какие впечатления?

Сразу linq2db. Если конечно нет острого желания писать sql ручками
А чего link2db? Если уж чятик по фшарпу, давай уже топить за sqlprovider.

Ayrat
09.07.2018
09:26:40
А чего link2db? Если уж чятик по фшарпу, давай уже топить за sqlprovider.
он хорош только если ты не владеешь схемой БД и тебе надо чтобы код падал в компайл тайме когда кто-то схему меняет. Разрабатывать на sqlProvider - геморой. Лучше сразу создать домен в типах и таблички насоздавать самому.

Я использую SQLProvider в проде. У меня есть упоротые дата саентисты, которые не любят писать доки, и у которых в день по 100 идей как изменить продакшн базу аналитики. Идеально зашло для работы с такими упорками

Вексельберг
09.07.2018
09:32:28
он хорош только если ты не владеешь схемой БД и тебе надо чтобы код падал в компайл тайме когда кто-то схему меняет. Разрабатывать на sqlProvider - геморой. Лучше сразу создать домен в типах и таблички насоздавать самому.
Thanks за отзыв, так и думал. Лично я бы эти тезисы на всё orm распространил - для меня code first очень странная идея мягко говоря. Может потому, что пишу много сложного трёх этажного sql, с который ни в одну том не сядет

Примитивные вьюхи типизированные - это потолок орм

Ayrat
09.07.2018
09:37:07
Ну, для микросервисов с микробазами - орм норм, по-моему. Иначе можно постареть пока всё напишешь ручками. Я видел ОРМ в энтерпрайзе - больше проблем чем пользы. Постоянные ковыряния - "почему такой говёный SQL запрос", бесконечная борьба с кодом миграций EF и пр. Постоянно делались шорткаты вида "да я лучше руками напишу и в метод оберну". Для себя принял решение SqlProvider если я не владею схемой, и надо оттуда читать Dapper для всего остального :D EF на помойку

Ayrat
09.07.2018
09:37:54
Вексельберг
09.07.2018
09:38:27
Не знаком с такой)

Ayrat
09.07.2018
09:39:37
Не знаком с такой)
это тот редкий случай когда MS сделали супер няшный продукт, который нравится всем с 1го применения. Примерно как VS Code Рекомендую попробовать

Вексельберг
09.07.2018
09:40:08
Ок, гляну, спасибо

Vlad
09.07.2018
09:54:06
у них раньше был генератор поко

Bonart
09.07.2018
09:54:29
И сейчас вроде есть

Google
Vlad
09.07.2018
09:54:55
И сейчас вроде есть
там просто вроде со сменой формата нугет пакетов начались проблемы с этим

когда инсталлскрипты запретили и еще что-то такое

Bonart
09.07.2018
09:55:50
Не в курсе - я-то linq2db прикручивал поверх ef core, когда последний просрал все поли.. запросы

Vasiliy
09.07.2018
09:55:54
orm бывают разные, тяжелыми вроде NHibernate и ef они не исчерпываются
+ мы как раз ушли от старого EF, ибо ему было уже ооочень тяжело генерировать БД по нашей схеме. В тоже время Linq2db делает это норм. Есть конечно претензии к генерации sql кода, но это очень специфические запросы. А так если ставить версию синтаксиса sql 2012, то запросы получаются вполне норм.

у нас подход DB-first и генерируем бд из t4 шаблона.

Vlad
09.07.2018
09:56:33
Vasiliy
09.07.2018
09:57:36
ну мы вообще на core.net сейчас.

linq2db лежит в проекте на .net standart

Vlad
09.07.2018
09:58:36
понял, спасибо

Dmitry
09.07.2018
12:47:36
раз тут про бд заговорили, я тут повторю: ещё спрошу про БД, DACPAC и BACPAC Я могу накатить новую схему на сервер с помощью DACPAC, а как сделать чтоб при накатке можно было бы и новую таблицу какими-то данными заполнить? Я могу, конечно, собрать BACPAC из уже где-то накаченой базы с настройкой "брать данные только из указанных таблиц", но для этого уже должна быть эта новая таблица с данными. Т.е. проблема курицы и яйца...

Dmitry
09.07.2018
12:51:06
А нет какого-нибудь Post Deployment Script?
есть, но при наличии DACPAC это выглядит костылём инородным. Тогда уж проще будет взять FluentMigrator

Вексельберг
09.07.2018
13:41:09
у нас подход DB-first и генерируем бд из t4 шаблона.
Тогда уж t4 first. Я как то психанул и попытался описать на t4 дерево, которых у меня довольно много в sql в виде рекурсивных запросов. Ни фига не вышло. А если бд не от мекросовд, а sqlite и постгрес - будут нюансы?

Vasiliy
09.07.2018
13:44:39
Тогда уж t4 first. Я как то психанул и попытался описать на t4 дерево, которых у меня довольно много в sql в виде рекурсивных запросов. Ни фига не вышло. А если бд не от мекросовд, а sqlite и постгрес - будут нюансы?
не не не, я кривова-то написал. У нас есть БД. А в шаблоне т4 мы просто описываем процесс генерации схемы. Сделали мелкие изменения в название связанных сущностей, и как называются таблицы с разными схемами типо dbo.User -> User, но mds.User -> MdsUser будет

Friedrich
09.07.2018
15:35:01
Ты все же смог продать себя JB?
Баги в Rider теперь буду чинить и я тоже :3

Ayrat
09.07.2018
15:36:27
Баги в Rider теперь буду чинить и я тоже :3
Ты конкретно над F# частью работаешь или вообще?

Vasily
09.07.2018
15:38:36
На некоторое время их станет больше :)

Friedrich
09.07.2018
15:38:55

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