@scala_ru

Страница 898 из 1499
Daniel
23.08.2017
06:01:28
Котаны, а что вас удерживает от использования Королева?
у меня в планах попробовать на небольших задачах а так нужды не было

Aleksei
23.08.2017
06:02:46
вот и прошла перепись людей использующих скалу на работе =)

Aleksey
23.08.2017
06:03:27
Aleksei
23.08.2017
06:03:49
неа. бэкэнд один гольный.

Google
Aleksey
23.08.2017
06:03:59
Aleksei
23.08.2017
06:04:45
бывает ) что ж поделаешь то

Oleg
23.08.2017
06:05:33
Котаны, а что вас удерживает от использования Королева?
Для моих личных проектов мне не нравится идея, что если я попытаюсь заюзать жаваскриптовые либы, что всегда нужно, мне придётся как-то адски надраяиваться вместо простого враппера в стиле scalajs или purescript

Для моих неличных, фронтенд на на js вообще не рассматривается

А ещё мне не нравится идея не иметь web-api

Aleksey
23.08.2017
06:14:34
А ещё мне не нравится идея не иметь web-api
Вот это кстати интересная тема. Весь мой опыт показывает что REST для морды != публичный API. Всегда приходится делать его отдельно сбоку, потому что в REST для морды забивается тысяча костылей. У тебя не так?

То есть в случае с Королевым морда сама по себе а REST, который юзает те же фреймворк-агностик модели, сам по себе.

Oleg
23.08.2017
06:24:35
Вот это кстати интересная тема. Весь мой опыт показывает что REST для морды != публичный API. Всегда приходится делать его отдельно сбоку, потому что в REST для морды забивается тысяча костылей. У тебя не так?
Я согласен, хотя и не обязательно подразумевал REST. Но есть по крайней мере имеется некоторое описание клиент-серверного взаимодействия, которое даёт понимание, как это масштабировать, балансить, секьюрить

Простой враппер в виде веб-компонента.
Т.е. если, например, мне нужно натянуть какой-то service worker и взаимодействие с другим уже имеющимся сервисом, это не составит труда?

Aleksey
23.08.2017
06:30:36
Т.е. если, например, мне нужно натянуть какой-то service worker и взаимодействие с другим уже имеющимся сервисом, это не составит труда?
Сервис-воркеры обычно упоминаются в контексте оффлайна. Веб-воркеры упоминаются обычно в контексте тяжелых вычислений (на пример шифрование на клиенте). И то и другое не про Королев. Но такие приложения вещь редкая.

P.
23.08.2017
06:36:51
Как выразить count(distinct ...) через slick?

https://gist.github.com/htch/1bb8cab8b41dbd782db167340a490018

Google
P.
23.08.2017
06:36:58
Моя попытка

Dmitry
23.08.2017
06:39:04
Никогда не понимал зачем такие запросы пытаться написать на slick

Какой выйгрыш перед плейном?

P.
23.08.2017
06:39:49
Да вроде бы не такой сложный запрос

Выигрыш в том, что в жизни квери чуть сложнее (обрезал для примера) и интерполировать все переменные внутрь SQL не хочется

Aleksei
23.08.2017
06:41:01
блин а как рефлексией передавать аргументом конструктора коллекцию? там наверняка надо подсовывать какие то ява типы, а не скаловские

Oleg
23.08.2017
06:53:48
Сервис-воркеры обычно упоминаются в контексте оффлайна. Веб-воркеры упоминаются обычно в контексте тяжелых вычислений (на пример шифрование на клиенте). И то и другое не про Королев. Но такие приложения вещь редкая.
Ну суть в том, что если я приду к необходимости запихивать одну из тысячи редких вещей в давно уже готовое приложение на королёве, мне нужно будет смириться, что королёв не про это. Что он - специализированная коробка, где клиент и протокол взаимодействия относительно плохо расширяются. От такой небольшой либы я обычно жду значительную степень расширяемости, описанную в ридми.

Т.е. если бы Королёв распространялся каким-нибудь гнойным гуглом, как gwt, я мог бы понять, что индусы по всей планете наплодили компонент на все случаи жизни и придумали всевозможные воркэраунды. Но для такой частной либы мне хотелось бы, чтобы я мог мог засунуть его куда-угодно, пока он решает свою небольшую часть задачи хорошо и не составляет проблем со взаимодействием с прочей инфраструктурой

Ну это так. На уровне ощущений, я даже ридми королёва плохо изучил

Aleksei
23.08.2017
06:58:24
vararg? Вроде массивом пихаешь их
это понятно что там варарг

просто у меня один из этих вараргов Seq

Oleg
23.08.2017
06:59:08
Тебе нужно seq передать как vararg?

Или передать seq в качестве одного из параметров?

Aleksei
23.08.2017
06:59:36
второе

Oleg
23.08.2017
06:59:56
Ну просто передаёшь его

Aleksei
23.08.2017
07:00:25
логично

спасибо

просто конструктор ждет scala.collection.Seq<java.lang.String>

что логично

Google
Aleksei
23.08.2017
07:02:41
но у нас же самая классная стд библиотека и после создания непустого Seq я получаю тип public final class scala.collection.immutable.$colon$colon<B>

Aleksey
23.08.2017
07:07:03
Ну суть в том, что если я приду к необходимости запихивать одну из тысячи редких вещей в давно уже готовое приложение на королёве, мне нужно будет смириться, что королёв не про это. Что он - специализированная коробка, где клиент и протокол взаимодействия относительно плохо расширяются. От такой небольшой либы я обычно жду значительную степень расширяемости, описанную в ридми.
Дело не в размере, а в идее. Королев это не протокол работы с клиентом с сервера, как эрланговский n2o/нитроген. Королев это декларативное описание UI и безопасное управление стейтом. Королев нацелен на то что бы убрать с клиента все что только возможно. То, что не возможно убрать (на пример карты какие-нибудь), надо обернуть в веб-компоненты.

Ты вот привел в пример сервисворкеры. Можно еще привести в пример webgl. Это не про королев.

Stanislav
23.08.2017
07:34:09
Mikhail
23.08.2017
07:38:48
Дело не в размере, а в идее. Королев это не протокол работы с клиентом с сервера, как эрланговский n2o/нитроген. Королев это декларативное описание UI и безопасное управление стейтом. Королев нацелен на то что бы убрать с клиента все что только возможно. То, что не возможно убрать (на пример карты какие-нибудь), надо обернуть в веб-компоненты.
вай-вай, а где там декларативное описание UI в королеве? ... Даже если забыть про все неудобства такой концепции, то как быть с ситуацией: Есть 2 проекта А и Б. Королев подходит для проекта А, а "Другой набор тулз(который тоже вполне себе удобен и не вызывает проблем)" подходит для проекта А и Б одновременно. Как думаешь насколько вероятно, что человек все же будет использовать в одном королева, а в другом другое? Может по первой и попробует, но вероятность того, что на всех последующих он перейдет на единый набор тулз - далеко за 90%. Людям не захочется распыляться и помнить про костыли и там и тут. И если у них будет возможность делать все на чем-то одном - они так и будут поступать)

Mikhail
23.08.2017
07:43:55
Ты за js сейчас сказал?)
за Go, который можно транслировать в Котлин, который можно транслировать в Жиэс. Или это только в моих влажных мечтах?

.
23.08.2017
07:45:10
а что с жс не так?

Nick
23.08.2017
07:45:31
И кстати даже в жс не так

Нодежс и тот что в браузере работает по разному всеж. Поэтому костыли приходится помнить и там и там)

.
23.08.2017
07:47:30
Нодежс и тот что в браузере работает по разному всеж. Поэтому костыли приходится помнить и там и там)
Так устранена проблема же. SSR во всю используется сейчас. Кодовая база одна для бэка и для фронта.

Grigory
23.08.2017
07:47:40
Жс из ллвм можн генерить

Вот это киллерфича

Mikhail
23.08.2017
07:47:56
> вай-вай, а где там декларативное описание UI в королеве? эээ.
Оно самое. Я не заметил нигде в королеве декларативного описания гуев. case Authorized(_, User(name, friends)) => 'body( 'div(s"Your name is $name. This is your frinds"), 'ul( // Look at that. You just map data to view friends map { friend => 'li(friend) } ) ) это не декларативно. это обычной описание интерфейса. хоть html и можно отнести к декларативному (но даже с такой позиции в Королеве ничего нового, просто дслчик, при чем с недекларативными вставками), все же к декларативному можно скорее отнести такие подходы как в ExtJS

Nick
23.08.2017
07:48:11
Жс из ллвм можн генерить
Из ллвм можно что угодно генерить)

Aleksey
23.08.2017
07:48:39
вай-вай, а где там декларативное описание UI в королеве? ... Даже если забыть про все неудобства такой концепции, то как быть с ситуацией: Есть 2 проекта А и Б. Королев подходит для проекта А, а "Другой набор тулз(который тоже вполне себе удобен и не вызывает проблем)" подходит для проекта А и Б одновременно. Как думаешь насколько вероятно, что человек все же будет использовать в одном королева, а в другом другое? Может по первой и попробует, но вероятность того, что на всех последующих он перейдет на единый набор тулз - далеко за 90%. Людям не захочется распыляться и помнить про костыли и там и тут. И если у них будет возможность делать все на чем-то одном - они так и будут поступать)
Ну вообще если подходить с точки зрения прагматики, то для каждой задачи свой инструмент. Если у тебя много сервисов, база данных, очередь и хочется пуш на клиент, то Королев позволит тебе сделать задачу быстрее всего. Если тебе нужно что бы клиент был супер-быстрый и мало весил то тоже Королев. Если тебе нужен оффлайн, и что бы муха за мышкой летала, свистела и пердела, то Королев не подходит.

Google
Grigory
23.08.2017
07:50:19
Из ллвм можно что угодно генерить)
Неа) ну джс хорошо можно даже генерить

ну конечно, не без боли

Aleksey
23.08.2017
07:52:13
Оно самое. Я не заметил нигде в королеве декларативного описания гуев. case Authorized(_, User(name, friends)) => 'body( 'div(s"Your name is $name. This is your frinds"), 'ul( // Look at that. You just map data to view friends map { friend => 'li(friend) } ) ) это не декларативно. это обычной описание интерфейса. хоть html и можно отнести к декларативному (но даже с такой позиции в Королеве ничего нового, просто дслчик, при чем с недекларативными вставками), все же к декларативному можно скорее отнести такие подходы как в ExtJS
Объясню разницу. "Декларативный" это когда ты не описываешь процесс исполнения/вычисления. То есть если изменения в UI делаются без прямого указания какие шаги нужно предпринять (императивность) что бы изменить UI, то это декларативный UI. В королеве нет императивных вставок. Единственное что можно сделать, это скопировать стейт. Дальше из этого стейт генерируется новый DOM, который сравнивается с предыдущим. При сравнении выводятся изменения.

Но ваадин не дает легковестности (тяжелые компоненты написаны на js и грузятся на клиент). И декларативность там ограничена первичным описанием лэйаута. Изменения в UI делаются императивно.

Nick
23.08.2017
07:55:22
Pure gwt тоже декларативный)

Aleksey
23.08.2017
07:55:44
Admin
ERROR: S client not available

Nick
23.08.2017
07:56:08
Нет конечно.
Да , у них ж есть xml файлики с лаиаутом

Aleksey
23.08.2017
07:56:33
Да , у них ж есть xml файлики с лаиаутом
Которые потом надо менять ручками. Дата-биндинги не в счет.

Mikhail
23.08.2017
07:58:02
Объясню разницу. "Декларативный" это когда ты не описываешь процесс исполнения/вычисления. То есть если изменения в UI делаются без прямого указания какие шаги нужно предпринять (императивность) что бы изменить UI, то это декларативный UI. В королеве нет императивных вставок. Единственное что можно сделать, это скопировать стейт. Дальше из этого стейт генерируется новый DOM, который сравнивается с предыдущим. При сравнении выводятся изменения.
Во-первых. В королеве есть императивные вставки 'ul( // Look at that. You just map data to view friends map { friend => 'li(friend) } ) Неважно как именно оно будет исполнятся под капотом - если что-то выглядит как императивщина - это и есть императивщина. Во-вторых я поэтому про html и напомнил - в Королеве декларативщины не более чем в html, чтобы использовать это для маркетинга (но тут хозяин-барин - что хочешь то и используешь, просто мы то знаем).

Aleksey
23.08.2017
07:58:09
Ракт+Редакс декларативный. Королев декларативный. А MXML/XAML/GWT/Vaadin поддерживают декларативность очень органиченно, подобно браузерному DOM. В случае браузерного DOM, HTML является декларативным, но работа с DOM является императивной

Mikhail
23.08.2017
07:58:17
Ваадин.
Vaadin ерунда полнейшая)

Nick
23.08.2017
07:59:41
Которые потом надо менять ручками. Дата-биндинги не в счет.
Дык эт от разраба компонента зависит, вполне вероятно что не надо будет)

/newpoll@PollBot

PollBot
23.08.2017
07:59:42
/newpoll@PollBot
Let's create a new poll. First, send me the question.

Mikhail
23.08.2017
08:00:17
Где ты там увидел имеративщину то? Это чистое отображение.
Епрст. Я же говорю - неважно, что под капотом. Визуально это цикл мап. Как оно там в рантайме - вобще не важно. В данном случае - главное то, что ты видишь глазами.

Aleksey
23.08.2017
08:00:25
Вот если бы там было что-то типа 'ul('id /= "myUl", friends foreach { friend => getElement("myUI").append('li(friend)) } ) Тогда другое дело

Google
Nick
23.08.2017
08:00:46
Реакт декларативный? Там ж js прям в jsx херачат)

Mikhail
23.08.2017
08:01:26
Вот если бы там было что-то типа 'ul('id /= "myUl", friends foreach { friend => getElement("myUI").append('li(friend)) } ) Тогда другое дело
заменить фор на мап и аппенд на return - не достаточно, чтобы изабиваться от императивщины

Nick
23.08.2017
08:01:34
А ну ок

.
23.08.2017
08:01:37
Nick
23.08.2017
08:01:55
Alexey
23.08.2017
08:02:22
{this.onChange} считается за херачат в jsx?

.
23.08.2017
08:02:31
Поверь, херачат
Ну я видел, но в нормальной практике этого не делают. Есть HOC обёртка и функциональные тупые компоненты.

Aleksey
23.08.2017
08:03:21
@odomontois Помоги мне. Ты имеешь объяснять. Михаил не понимает.

Nick
23.08.2017
08:03:50
Я бы сказал что функция рендер обычно возвращает чтот декларативное) но остальное хз

Ну я видел, но в нормальной практике этого не делают. Есть HOC обёртка и функциональные тупые компоненты.
Я кстати когда на реакте писал - не видел такого подхода. Делают jsx один на компонент и все логику описывают в нем

Aleksey
23.08.2017
08:04:47
@rudogma в общем по твоей логике хаскел это императивнй ЯП, потому что там можно сделать мап и там есть ду-нотация.

.
23.08.2017
08:05:05
Aleksey
23.08.2017
08:06:26
Nick как бы там ни было работа с UI в реакте декларативная. Ты не можешь импертаивно узакать какие операции надо произвести над DOM. Есдинственный способ изменить DOM в реакте это сгененить новое отображение.

Mikhail
23.08.2017
08:06:29
Цикл мап, ок. Думаю мы говорим на разных языках.
Вот смотри. Взял первый попавшийся пример из вуе. <div id="app-4"> <ol> <li v-for="todo in todos"> {{ todo.text }} </li> </ol> </div> Здесь попытка запихать императивный цикл в декларативную обертку. Пусть и выглядит декларативно, но все та же императивщина. Только теперь выглядит как кусок говна. А теперь вспомни про Flex (я знаю, что ты про него знаешь не по наслышке). Вспомни как там решались эти вопросы. Помнишь? <DataGroup dataProvider="{$data}"><Component name="itemRenderer">....</Component><DataGroup> Тут уже никакой императивщины)

Nick
23.08.2017
08:06:33
Ну так у тебя всё декларативно должно быть. Вот это ужасно просто.
Я помню индусы наоборот ликовали, что могут все в одном файле делать

Страница 898 из 1499