
Nick
29.09.2016
17:36:39
Естественно паблик филд эт зло
Но стеит в акторе тоже зло

Nikita
29.09.2016
17:37:10
актор без стейта как пиво без водки
тогда уже фьючу чтоли использовать

Google

Nikolay
29.09.2016
17:37:22

Nikita
29.09.2016
17:37:28
если стейта нет

Denis
29.09.2016
17:37:51

Ivan
29.09.2016
17:37:58
вопрос про стейт в акторе всегда тролинг

Nick
29.09.2016
18:01:44
хз почему, вроде писал

folex
29.09.2016
18:30:40
Шаред стейт в акторе это как?
Чужой если только

Nikolay
29.09.2016
18:32:59
Такое может?))
var counter: Int = 0
class Actor1 extends Actor {
def receive: Receive = {
case "AAA" => counter += 1
}
}
class Actor2 extends Actor {
def receive: Receive = {
case "BBB" => counter += 1
}
}

Nick
29.09.2016
18:36:44

Nikolay
29.09.2016
18:37:01
паблик филд у актора?
но ты же никогда не обращаешься напрямую к актору через инстанс класса, все взаимодействия через ActorRef, невозможно извне что-то сделать с публичным полем у актора, если только ты не делаешь val ma = new MyActor; ma.counter += 1
но если ты так делаешь, значит что-то не так

Google

folex
29.09.2016
18:48:27

Nick
29.09.2016
19:49:34

folex
29.09.2016
19:50:48
Шареный стейт в акторах, меняющийся напрямую в инстансе через рефлекшн -- это плохо.
Nick все так сказал?

Nick
29.09.2016
19:51:02
почему через рефлекшин
он ж у тебя паблик

folex
29.09.2016
19:51:07
а через что?
иии?
типа сохранил инстанс?

Dmitry
29.09.2016
19:52:30
я знаю этот паттерн. делаешь актор систем, и отдельно -- реестр. все акторы при создании записываешь в реестр и мутируешь в них состояние напрямую. акка -- просто так для понтов

Nick
29.09.2016
19:53:13
типа сохранил инстанс?
можно и не сохранять, он уже внутри akka сохранен и никто не мешает тебе достать прямо инстанс актора

folex
29.09.2016
19:53:44
Как?

Nick
29.09.2016
19:53:59
через рефлекшин )

folex
29.09.2016
19:54:00
Nick you have my attention
азаза
Nick Троллить вы не умеете-с, уважаемый

Nick
29.09.2016
19:55:00
ну на самом деле можно и через debug интерфейс спокойно достать)

folex
29.09.2016
19:55:08
Это как?
Что за debug интерфейс? Nick
TestActorRef что ли?

Google

Nick
29.09.2016
19:55:58
jdi в гугле набери
а лучше jpda

folex
29.09.2016
19:57:01
прикольно, буду знать

Nick
29.09.2016
19:58:25
http://docs.oracle.com/javase/8/docs/jdk/api/jpda/jdi/com/sun/jdi/ReferenceType.html#instances-long-
хотя эт читерство, private будет тоже виден)

Alex
29.09.2016
20:04:55
/stats

Combot
29.09.2016
20:04:55
combot.org/chat/-1001034178083

Nikolay
29.09.2016
20:06:30
Картинка буханка троллейбус

Alexey
30.09.2016
07:05:18
кто-то пользовал scalike?

Ivan
30.09.2016
07:05:24
+

Alexey
30.09.2016
07:05:37
оно не умеет само понимать какие колонки у меня оказались в резалт сете?
просто дает мне WrappedResultSet а дальше типа сам?

Ivan
30.09.2016
07:05:53
да
это нормально

Alexey
30.09.2016
07:05:58
печалюшка
еще одно место где можно сделать ошибку :)

IEvgenii
30.09.2016
07:06:12
get quill it =)

Юрий
30.09.2016
07:06:21
над скалайком есть orm обертка, которая так умеет

Alexey
30.09.2016
07:06:50
а мне не нужно орм. мне нужно иметь возможность передать список колонок на вход в том или ином виде и получить в ответ тапл

Юрий
30.09.2016
07:06:52
то есть так и задумано в либо - мы типа очень низкоуровневые, но если чё, то есть орм

Google

Alexey
30.09.2016
07:07:26
quill умеет так?

Юрий
30.09.2016
07:07:30
да
но он compile-time. То есть если нужно делать какую-то магию в рантайме, то он не очень подходит
но вообще quill очень приятный

Alexey
30.09.2016
07:09:30

Alexey
30.09.2016
07:11:04

Ivan
30.09.2016
07:16:19
Погодите, про quill, как он умеет, не понял. В нем же нельзя самому sql писать вроде? Имеется в виду, что в нем можно с помощью его DSL передать список колонок и получить tuple?

Admin
ERROR: S client not available

Юрий
30.09.2016
07:20:01
если список колонок динамический, то вроде нет, квил так не умеет
он из своего дсл в компайл тайме строит sql
и мапит результат на кейс классы

Luger
30.09.2016
07:21:58
В quill есть dynamic queries

Vladimir
30.09.2016
07:22:29
quill очень приятный, согласен. Но он перестает работать, если схема определяется в рантайме.
причем иногда очень неожиданные неприятные вещи происходят.
Я позавчера попался - мне нужно было имя таблицы передавать в рантайме (вся остальная схема определена на этапе компиляции).
В итоге он это скушал без ворнингов, но в рантайме имя таблицы было дефолтовое - выведенное из имени case class-a модели.
https://github.com/getquill/quill/issues/501
@Luger_08 да, но схему в рантайме они не переваривают
ну то есть если хотя бы что-то в схеме берется в рантайме - лучше взять другой орм

Юрий
30.09.2016
07:28:37
В quill есть dynamic queries
есть, но они умеют довольно мало. Я разговаривал с разрабоотчиками в гиттер чатике. Произвольный запрос динамически ты не соберешь
это вроде как есть пока только в планах

Luger
30.09.2016
07:30:56

Diemust
30.09.2016
08:18:35
scalike умеет же вынимать все из резалтсета с помощью макросов.
def apply(rn: ResultName[WebhookInner])(rs: WrappedResultSet): Table = autoConstruct(rs, rn)
потом доставать так
withSQL {
select.from(Table as tb).where.eq(tb.uuid, uuid)
}.map(r => Table(wh)(r))

Google

Alexey
30.09.2016
09:01:38
что такое wh?

Diemust
30.09.2016
09:05:23
tb вместо wh
кривая копипаста =)

Alexey
30.09.2016
09:05:49
но тогда там будут все поля?
моя задача получить на вход список полей, выполнить запрос и получить типизированный ответ.

Diemust
30.09.2016
09:06:41
ответ туплой типа?

Alexey
30.09.2016
09:17:31
Ага
или hlist

Diemust
30.09.2016
09:18:19
посмотри сюда, мож тут есть такое https://github.com/gakuzzzz/free-scalikejdbc

Alexey
30.09.2016
09:19:17
Это же всего лишь апи фри монады?
осталось разобраться что есть "нормальныая"

Kyrylo
30.09.2016
09:22:20
slick
чем не устраивает?

aeon
30.09.2016
09:22:57

Alexey
30.09.2016
09:26:38
в слике такое я пока не пробовал сделать
Возможно должно получиться, да

Vladimir
30.09.2016
09:29:56
я подозреваю, там в HList это все выльется

Юрий
30.09.2016
09:32:56
где-то я видел толи проект, толи чё, где к слику прикручивали HList

Diemust
30.09.2016
09:33:56
просто фри монадка добавляет возможность лучше работать с контейнерами и там scalaz добавляется, есть возможность это допилить

Vladimir
30.09.2016
09:34:29