@scala_ru

Страница 64 из 1499
Anatoliy
27.08.2016
06:20:40
да

Oleksandr
27.08.2016
06:20:46
case `gender' => словит только конкретно эту переменную

Anatoliy
27.08.2016
06:20:52
case SelectionChanged(gender) => log.info("Your gender is now: " + gender.selection.item)

val gender = new ComboBox(List("don't know", "female", "male"))

Google
Oleksandr
27.08.2016
06:21:12
case gender словит вообще все

и во втором случае умная ИДЕ намекнет про name shadowing

Anatoliy
27.08.2016
06:23:53
Хм... а как можно попробовать тогда сделать обработку события если количество этих объектов может быть неизвестным? т.е. надо динамически добавлять подобную обработку для каждого нового new ComboBox(List("don't know", "female", "male")) например?

Oleksandr
27.08.2016
06:24:56
ловить все те ComboBox, где есть какой-то паттерн в содержимом?

(это я уточняю)

Anatoliy
27.08.2016
06:26:36
Не, на каждый случай паттерн ведь не сделаешь, верно? Да и там ведь не только комбобоксы могут быть. Вообще - могу подробнее рассказать что я хочу сделать. Решил просто разобраться как это работает, но вот тут запнулся, хотя есть подозрение что если "просто делать дальше" - то скорее всего решение найду по ходу...

Oleksandr
27.08.2016
06:27:06
ну в патмат можно добавлять условия

case comboBox if этотМнеПодходит(comboBox) => ...

можно понтануться через unapply, но вряд ли это нужно здесь

Anatoliy
27.08.2016
06:28:18
ПРосто как это происходит сейчас: val gender = new ComboBox(List("don't know", "female", "male")) contents += gender listenTo(gender.selection) reactions += { case SelectionChanged(gender) => log.info("Your gender is now: " + gender.selection.item) }

Соответственно если комбобоксы будут генериться - каждый из них надо впихнуть в контентс, но это в принципе понятно, плюс добавить в listenTo, но тут вроде тоже всё нормально, а вот добавить в reactions - как-то не очень представляю такое добавление case. Или оно по аналогии просто += case ... и погнали дальше?

Сделать это хочу через акторы, т.е. создаю новый актор который добавляет всё нужное в контентсы где надо и потом просто всё это мониторит....

Oleksandr
27.08.2016
06:30:35
а когда надо добавлять в reactions?

Google
Anatoliy
27.08.2016
06:31:01
я так понимаю что при добавлении нового комбобокса

Oleksandr
27.08.2016
06:31:50
те ты где-то в другом коде добавляешь комбобокс, и хочешь их все ловить в этом патмате?

Anatoliy
27.08.2016
06:32:33
т.е. главный актор создает новый актор-комбобокса и он при создании в преСтарт создает в гуишке сам комбобокс, ну и мониторит его. А при получении сообщения - убирает его из гуишки и из мониторинга

как-то так думал

т.е. у меня сейчас получается стартует приложение, там создается гуишка и она же отправляется главному актору, который может с ней что-то делать. Он же когда считает что надо создать комбобокс - создает актор и этот актор получает необходимые инструменты для его прописки в нужных местах

Oleksandr
27.08.2016
06:34:30
можно ли вынести создаваемые гуи-компоненты в отдельный интерфейс?

и ловить его?

Anatoliy
27.08.2016
06:35:06
Вообще - скорее всего да, но делать я так пока не умею, или не знаю что умею)

Или не понимаю что именно надо сделать. Т.е. создаем какой-то класс с которого наследуем все эти комбобоксы, так? и мониторим действия с этим классом по сути?

интерфейсом*

Oleksandr
27.08.2016
06:40:10
trait MySpecialGui { def whatToLog: String } object MySpecialGui { def unapply(gui: Any): Option[String] = gui match { case my: MySpecialGui => Some(my.whatToLog); case _ => None } } ... // в патмате case MySpecialGui(whatToLog) => log.info(whatToLog)

(сорри за индентацию, неудобно писать)

насколько я понял ситуацию, это может помочь

Anatoliy
27.08.2016
06:41:50
Эм... щас гляну, хотя возможно я что-то не понял... но спасибо, ащс буду пробовать

Oleksandr
27.08.2016
06:42:35
ну идея какая: создать общий интерфейс для всех "нужных" гуи и обьект-компаньон, который знает, как их обрабатывать

ну и надо во всех "нужных" гуи наследоваться от интерфейса, конечно

Anatoliy
27.08.2016
06:43:37
Ага, а case у нас тогда получается и идет в reactions где и отлавливается? а по внутренним переменным MySpecialGui можно будет понять что у нас вообще попалось?

Oleksandr
27.08.2016
06:43:57
как-то так, да

Anatoliy
27.08.2016
06:44:47
Хм... спасибо, щас буду пробовать

Но я так понимаю мне тогда придется сделать объект который наследуется от комбобокса например и от MySpecialGui ?

Google
Oleksandr
27.08.2016
06:47:23
только от комбобокса и интерфейса

http://danielwestheide.com/blog/2012/11/21/the-neophytes-guide-to-scala-part-1-extractors.html

вот тут очень толково написано на эту тему

(и вообще блог классный, пусть даже и 2012 года)

Anatoliy
27.08.2016
06:49:13
Угу, это я вижу, но это ведь немного не то? Я ведь создаю комбобокс, и событие происходят завязанное на него, так? Т.е. он в предках точно должен быть, иначе я это событие просто не увижу, так?

Oleksandr
27.08.2016
06:50:01
ну, да, надо наследоваться от гуи-класса и интерфейса MySpecialGui (отредактировал сообщение, хз видно ли)

Anatoliy
27.08.2016
06:50:22
А во, видимо не правильно прочитал

Т.е. интерфейс дает нам возможность отслеживать "группу" этих комбобоксов, а сам комбобокс позволяет с ним работать именно в гуишке... пошел пробовать)

Oleksandr
27.08.2016
06:51:35
ага, так, удачи)

Anatoliy
27.08.2016
06:51:42
А за ссылку - спасибо, действителньо хорошие примеры)

Alexey
30.08.2016
01:58:43
Други, а кто-то встречал NonEmptySet? Как NonEmptyList, только Set

Denis
30.08.2016
05:08:36
Чисто технически его можно было сделать из cats.data.OneAnd[Set, A], но и его выпилили в последней версии.

Andrew
30.08.2016
14:37:44
господа, посоветуйте, пожалуйста. есть задача, которая прям хорошо ложится на концепцию конечных автоматов, но данные для неё мы получаем из Spark Streaming. cтоит ли пытаться прикрутить к стримингу что-то типа Akka-FSM или же это излишне и лучше ограничится стриминговым mapWithState?

Grigory
30.08.2016
14:42:00
а mapWithState медленный оказался?

Wystan
30.08.2016
14:44:12
имхо, akka-fsm это плохо читабельный варианта context.become()

Andrew
30.08.2016
14:46:18
а mapWithState медленный оказался?
нет, по производительности претензий нет.

folex
30.08.2016
14:51:46
Ну в FSM есть OnStateChange, это иногда удобно. Если логика автомата будет небольшой, можно заиспользовать FSM. Если будет разрастаться, станет не очень удобно.

Grigory
30.08.2016
14:54:49
имхо меньше зависиомтсей = лучше если можно без подключеня fsm то это хорошо а вообще можно делать две реализации и сравнить читабельность / скорость / архитеткру получившуюся в резульате но это требует времени))

Andrew
30.08.2016
14:57:37
т.е., не факт, что реализация на fsm будет компактнее и проще, чем все то же самое в mapWithState делать?

Wystan
30.08.2016
15:04:00
На такой общий вопрос вряд ли кто ответит.

Google
Wystan
30.08.2016
15:06:19
Вообще, конечно, интересно, что за реальная задача, которая ложится на fsm. Насколько я помню из универа, fsm - это такой низкоуровеный тьюринг с алфавитом, стейты, транзакции. Какие-то там теоремы были что регулярки эквивалентны каким-то автоматам, а экспоненциальным автоматом что-то другое.... Только философ может найти связь всего этого с akka-fsm

Grigory
30.08.2016
15:07:47
да нужны подробности)

folex
30.08.2016
15:09:02
Ну речь не про теоретический FSM, а про akka-fsm. Там это просто DSL для написания автомата на акторах. В целом достаточно удобно, раньше по мере развития FSM там появлялись подводные камни, но уже с год всё хорошо.

Очень удобно позволяет декомпозировать код на кучу методов, и отдельно описать хуки на переход между состояниями

А ну и в одном месте написать обработчики для всяких исключительных событий типа останова или необработанного сообщения.

Admin
ERROR: S client not available

Daniel
30.08.2016
15:10:11
и протестировать все это тоже нормально

folex
30.08.2016
15:10:14
И state timeout это прикольно

А в остальном никакой серебряной пули

юнит тестами FSM не покрывал, к слову

но слышал что да, удобно тесты писать

Daniel
30.08.2016
15:11:46
серебряной пули тут и не может быть, обычно это вагон условий, которые надо учитывать и к тестам придется скатиться

коротко не описать в любом случае

Grigory
30.08.2016
15:12:14
:D короче какой вопрос такой ответ

Daniel
30.08.2016
15:12:36
ответ - чуть удобней и опрятней чем без

Andrew
30.08.2016
15:16:20
подробности - у объекта есть штук 5 состояний и десяток правил перехода из одних в другие. в самых общих чертах - катаются машинки, от них идет gps-трек и между "загрузкой" и "выгрузкой" не должно быть "остановок"

folex
30.08.2016
15:17:04
Все правила перехода придется описывать одинаково что в FSM что без

Разве что стейт будет всегда под рукой

он там в case передается

В общем если хочется попробовать FSM — звучит как неплохая задача.

Google
Denis
30.08.2016
15:26:28
Akka-FSM это не portable решение, лучше все выразить в чистых функциях типа State => Input => F[State] а потом уже решать на стримах запускать это или на акторах шардированных

@folexeyy вот тебе Nedelcu ответит еще :)) https://www.youtube.com/watch?v=CQxviYlAKaY&feature=youtu.be&t=36m11s

упс

не ты же вопрос задавал

Andrew up

Andrew
30.08.2016
15:48:33
ясно, спасибо! попробую пока mapWithState обойтись

folex
30.08.2016
16:49:53
В akka streams concat игнорирует ошибки в Source, верно?

Есть ли какая-нибудь альтернатива? Я хочу в concat передавать Source, который может внезапно закончиться с ошибкой, и если произошла ошибка, то фейлить Future, а не идти дальше

Nikita
30.08.2016
17:22:27
Кастомная supervision strategy?

folex
30.08.2016
17:22:34
нет

из akka-http чз FileUploadDirectives приходит

а потом в FileIO.toFile уходит. Похоже что в нем дело

Grigory
30.08.2016
18:01:15
ребят, кто h1b делал отпишите плз; по процессу вопросы есть

Aleksei
30.08.2016
19:36:08
прорвало?

Pavlo
30.08.2016
19:41:07
полезли на свет...

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