@scala_ru

Страница 813 из 1499
Aleksey
10.07.2017
11:58:24
кстати, акторы проблему concurrent доступа не решают
в рамках актора решают. а наружу стейт не должен выставляться. аск -- антипаттерн.

Nick
10.07.2017
11:59:10
@fomkin а не хочешь взять какой-нить disruptor?)

KrivdaTheTriewe
10.07.2017
11:59:29
Aleksey
10.07.2017
12:00:21
промоуз слать актору это совсем плохо?
просто геттеры - зло. с аском тоже самое

Google
KrivdaTheTriewe
10.07.2017
12:01:46
у меня тут была задача общаться с акторсистемой,когда асков совсем нет внутри нее, а ответ как-то внешней системе нужно вернуть, с промоузом проще всего получилось.

Alexey
10.07.2017
12:08:58
ну это такой, граничный кейс всё таки

ask по сути

KrivdaTheTriewe
10.07.2017
12:12:56
ask по сути
аск вырождается в цепочку асков , то есть у тебя все по цепочке должно идти( до конечной реализации )

folex
10.07.2017
12:13:30
ну это такой, граничный кейс всё таки
А как писать реквест-респонс ориентированные приложения на акторах без асков или их подобия? Или "не пишите такие приложения на акторах"?

Alexey
10.07.2017
12:14:58
аск вырождается в цепочку асков , то есть у тебя все по цепочке должно идти( до конечной реализации )
почему? у тебя есть слой акторов, который находится на стыке между акка миром и другим, собственно этот слой уже общается с акторами посредством tell, а не ask

@folexeyy я всё видел :)

folex
10.07.2017
12:17:22
мисклик :) Но пак прекрасен, да

Aleksey
10.07.2017
12:19:22
А как писать реквест-респонс ориентированные приложения на акторах без асков или их подобия? Или "не пишите такие приложения на акторах"?
Ну вообще да. Не надо писать писать такие приложения на акторах. В крайнем случае у тебя должно быть актор который собирает ответ. Технически это может быть выполнено как угодно. Проблема аска в том что он искушает использовать pull-модель повсеместно.

Vadim
10.07.2017
12:21:26
это перебор)

folex
10.07.2017
12:21:30
Ну мы тоже пришли к актору-коллектору. Аски это прям плохо. А реквест-респонс приложения на акторах в целом норм, удобное конкарренси же.

Alexey
10.07.2017
12:21:57
тут как и везде - главное не увлекаться

Google
Vadim
10.07.2017
12:21:58
а как получить данные из актора коллетора?)

Alexey
10.07.2017
12:22:23
а как получить данные из актора коллетора?)
он их уже сам кладёт куда надо

folex
10.07.2017
12:22:24
@dos65 промисами-фьючами например

но да, он их сам кладет туда, ты уже не пуллишь

Vadim
10.07.2017
12:22:52
но зачем тебе самому заворачивать промис, если аск за тебя это сделает7)

Aleksey
10.07.2017
12:23:18
На моей практики эволюция проектах выглядит так: 1. У нас будут акторы и мы победим конкаренси! 2. Хм. Мне нужны данные из актора А в акторе Б. Давай-ка сделаем запросик из А в Б через аск. 3. Что-то весь проект в асках. Проще было бы использовать геттеры! 4. Акторы -- говно. Надо все переписывать на стримах! 5. ... 6. Фэйл.

folex
10.07.2017
12:23:29
KrivdaTheTriewe
10.07.2017
12:23:58
почему? у тебя есть слой акторов, который находится на стыке между акка миром и другим, собственно этот слой уже общается с акторами посредством tell, а не ask
вот ты делаешь АСК актору из внешнего мира , как он тебе ответ вернёт внешнему миру , по Аску не получится потому что этот пктор должен получить ответ от актор системы , но это можно сделать только обработав следующее сообщение

Aleksey
10.07.2017
12:25:24
Ну мы тоже пришли к актору-коллектору. Аски это прям плохо. А реквест-респонс приложения на акторах в целом норм, удобное конкарренси же.
Для реквест-респонса аски тоже не подходят, потому что обычно возникает необходимость трекать реквест по логам. По этому так или иначе преходится передавать какой-то RequestId. А если его передавать, то почему бы не передавать адрес получателя вместе с ним.

Henadz
10.07.2017
12:29:05
подставь сюда любую технологию вместо акторов
поставь сюда мальчика с велосипедом и палкой )

Aleksey
10.07.2017
12:30:23
Так всетаки Кланговские миниакторы. Какие у них минусы?

KrivdaTheTriewe
10.07.2017
12:32:13
не вижу проблемы
ну так как внешний мир спросит ?

Mikhail
10.07.2017
12:32:35
@fomkin зачем тебе акторы сдались? тебе ведь непосредственный обмен сообщениями не требуется? тебе ведь наверное просто хочется засинкать выполнение блока кода по определенному ключу (где ключом может быть любой обьект) и при этом не иметь flag.synchronized, поскольку это не гибко, может тормозить общий прогресс, еще и не все нужные случае этим покроешь и т.д.. верно? или я не правильно понял для чего тебе акторы? ))

KrivdaTheTriewe
10.07.2017
12:32:58
ты делаешь актору АСК, он дальше делает цепочку теллов , но чтобы получить ответ он должен обработать сообщение , а ты всё ещё с теллом висишь

Alexey
10.07.2017
12:33:10
одним аском

или я неправильно понял фразу цепочка асков

Google
Vadim
10.07.2017
12:34:47
а какой стейт кроме сессии?

Vladimir
10.07.2017
12:36:37
https://monix.io/docs/2x/eval/mvar.html

не достаточно будет?

Alexander
10.07.2017
12:37:46
Так и сделано. Там есть стейт коннекшона, стейт сессии, стейт бриджа, стейт самого приложения. По началу оно нормально управлялось и выглядело, но потом разлослось -- здесь счетчик, там хэшмэп, здесь еще один хэшмэп. Раньше я еще сапортил scala.js версию, по этому AtomicReference нельзя было использовать, в ход пошли волатайлы и тп. Трогать это страшно. Лучше решить это дела раз и на всегда, акторами, где в стейт меняется всегда из одного треда.

Aleksey
10.07.2017
12:37:50
а какой стейт кроме сессии?
Ну вот есть стейт приложения, который пользовательский. Там для него по сути написан тот же кланговский актор: очередь и tell. Потом есть всяки хэштаблицы в которых лежат эвенты, делэи, колбэки. Потом есть всякие счетчики скрытые. Флажки разные.

не достаточно будет?
Моникс я не хочу тащить в зависимости еще больше чем акку.

Alexey
10.07.2017
12:43:33
почему "еще больше"?

Nick
10.07.2017
12:43:49
@fomkin у тебя ж по идее весь запрос должен обрабатываться одним тредом, откуда конкуренция?

Aleksei
10.07.2017
12:44:41
почему "еще больше"?
потому что там помимо моникса теперь и кошки прилетают

Aleksey
10.07.2017
12:46:43
@fomkin у тебя ж по идее весь запрос должен обрабатываться одним тредом, откуда конкуренция?
Нет, потому что в футуры, которые onComplete выполняют в executionContext. Это кстати еще одно проблема потому что Королев тестировался на футурах, но не привязан к ним. Очень может быть что при использовании мониксовского такска все станет колом. Акторы ведут себя просто и предсказуемо и отличии от любого самодельного зоопарка на примитавах.

Alexey
10.07.2017
12:46:52
Моникс я не хочу тащить в зависимости еще больше чем акку.
вообще кстати у него крутые примитивы для конкаренси

получается неблокируемый апи н тасках

Vladimir
10.07.2017
12:48:37
ну если таски из апи торчать будут, то это такое себе

Alexey
10.07.2017
12:49:29
торчат. а что с этим не так?

Aleksey
10.07.2017
12:54:17
очередь и воркеры
Обобщаем, получаем акторы. Возвращаемся к изначальному повросу: Кланговские акторы и моя модфикация с типизацией. Плюсы, минусы, подводные камни?

Google
Nick
10.07.2017
12:55:00
@fomkin у тебя реквест разбивается на мелкие части и получается несколько футуров?

Aleksey
10.07.2017
12:57:13
@fomkin у тебя реквест разбивается на мелкие части и получается несколько футуров?
Есть сообщения в одну сторону и есть в другую. Иногда это принимает форму реквестов, когда сендер "ждет" что ему пришлют ответ. На пример когда дергаешь поля из формы. Но в целом это асинхронная по своей сути система.

Nick
10.07.2017
12:58:55
вот когда сендер ждет, эт имхо не круто

Vadim
10.07.2017
13:00:06
@fomkin видимых минусов нет - если тебе достаточно обертки читалки очереди - бери)

Aleksey
10.07.2017
13:00:26
вот когда сендер ждет, эт имхо не круто
"Ждет" это значит о сохранил в мапе промис по айдишнику запроса. Есть сообщения с той стороны которые несут ответ помеченный айдишником сообщения.

Vadim
10.07.2017
13:01:36
хотя в случае ошибок - что делать?)

Nick
10.07.2017
13:02:01
кароч фомкин, бери disruptor и мути паип на нем

Admin
ERROR: S client not available

Nick
10.07.2017
13:02:02
)

1 writer - 1 reader )

Nick
10.07.2017
13:03:21
аа, ты ж scalajs хочешь?

KrivdaTheTriewe
10.07.2017
13:03:24
Есть норм паттерн для редкообновляемых справочников в акторсистемах ?

Aleksey
10.07.2017
13:03:54
хотя в случае ошибок - что делать?)
Да, обработки исключений нет. Отмечу. Спасибо

Nick
10.07.2017
13:04:12
тогда в чем проблема?

Aleksey
10.07.2017
13:05:48
тогда в чем проблема?
В том что там развесистый стейт и не пайп совсем. Я не знаю кстати что за дисраптор.

Nick
10.07.2017
13:06:05
зря не знаешь)

что значит не пайп?

мне трудно сервер без пайпа представить

Google
Aleksey
10.07.2017
13:08:45
Одно сообщение меняет стейт в разным местах.

Nick
10.07.2017
13:10:05
проблема в том, что может придти несколько сообщений и это превращается в канкарент модификеишин дерева?

Alexander
10.07.2017
13:15:56
Обобщаем, получаем акторы. Возвращаемся к изначальному повросу: Кланговские акторы и моя модфикация с типизацией. Плюсы, минусы, подводные камни?
на каждый актор своя очередь. много акторов - много очередей. возможно стоит сделать одну очередь и хранить адреса акторов в сообщениях. и уже внешним диспетчером вызывать receive у акторов и следить за потоками.

folex
10.07.2017
13:16:35
А если я хочу в кошках автоматический вывод Eq для Product (case class), мне нужно использовать какой-нибудь https://github.com/milessabin/kittens или есть встроенные способы?

Alexander
10.07.2017
13:17:13
короче не хранить данные в объекте, который сам по себе уже адрес сэтих данных

Nick
10.07.2017
13:17:25
@fomkin почитай лс

Aleksey
10.07.2017
14:34:14
@fomkin почитай лс
Ага, спасиб, почитаю

Oleg
10.07.2017
14:36:46
Тоже пойду почитаю лс

folex
10.07.2017
14:38:17
давайте все читать лс фомкина (взлом ТГ без смс)

Oleg
10.07.2017
14:40:59
А если я хочу в кошках автоматический вывод Eq для Product (case class), мне нужно использовать какой-нибудь https://github.com/milessabin/kittens или есть встроенные способы?
Ну естественно, все инстансы, который есть в kittens можно получить легко автоматически. Просто Сабин решил продемонстрировать, как можно усложнить решение, используя шейплесс

folex
10.07.2017
14:41:50
Мм, сарказм тут ни к чему

Могло например быть так что он сделал киттенз, а потом кошки к себе это занесли

или еще с десяток других вариантов

Oleg
10.07.2017
14:42:38
Могло например быть так что он сделал киттенз, а потом кошки к себе это занесли
Для кейзклассов ничего на автомате не выводится, кошки не заносят себе автовывот на шейплесс

Напрашивается автовывод: нет, нельзя

folex
10.07.2017
14:43:25
автовывод :D

Oleg
10.07.2017
14:44:39
Самое автоматическое - это Eq.fromUniversalEquals

он будет .equals внутри запускать, который для кейзклассов написан

folex
10.07.2017
14:45:15
о, а вот это круто, спасибо еще раз :)

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