
Bulbu
28.04.2016
19:50:22
на скорую руку набросал
possibleAttacks - ради пешки

Viacheslav
28.04.2016
19:51:15
вот ещё пример (мне нравится идея что фигурка имеет метод "могу сходить туда-то" это выглядит натурально) https://github.com/xnull/xnull/blob/master/chess/src/main/scala/chess/Piece.scala

Dmitry
28.04.2016
19:51:45
Да, спасибо за примеры, есть над чем подумать

Google

Dmitry
28.04.2016
19:51:49
На счет натурально
Фигурку вроде бы как шахматист двигает

Viacheslav
28.04.2016
19:52:16
тоже верно)

Dmitry
28.04.2016
19:52:21
И он у себя в голове все просчитывает))
#планпоездки

Oleksandr
30.04.2016
17:22:30
http://www.lihaoyi.com/post/StrategicScalaStyleConcisenessNames.html

Vladimir
05.05.2016
09:39:03
Кто-нибудь использовал Akka FSM в связке с БД? Задом чую, что будут проблемы из-за асинхронности, но уж больно хорошо в задачу вписывается. Persistence FSM идеально бы зашла, но она в альфе

Vyatcheslav
05.05.2016
12:29:23
А в чем там могут быть проблемы?

Vladimir
05.05.2016
12:55:19
Если я не хочу делать в акторе блокирующие вызовы, придется либо делать ему дополнительный state "Working", при котором он будет отбрасывать запросы на смену состояния, либо городить Stash

Nikolay
05.05.2016
12:58:44
> дополнительный state "Working", при котором он будет отбрасывать запросы на смену состояния
отбрасывать - в смысле отвечать Status.Failed?

Nikita
05.05.2016
13:01:00
Дык обернуть вызов в фьючу и запускать его на отдельном тредпуле
Сработает?

Nikolay
05.05.2016
13:02:48
так @leammas об этом и говорит, насколько я понимаю

Google

Nikolay
05.05.2016
13:05:25
мы на проекте городили стеш как раз. баги ловить не очень приятно. дебажить много приходилось такое

Vladimir
05.05.2016
13:05:30
Сработает?
Чтобы избежать случаев, когда асинхронность приведет к неконсистентности придется делать Stash

Nikolay
05.05.2016
13:06:02
ну, это личный опыт. может быть у кого-то есть более приятный опыт

Vladimir
05.05.2016
13:06:32
Со стешем есть пара акторов, но они просты до безобразия

?Ivan
05.05.2016
13:07:58
у Stash насколько я знаю очередь не резиновая, могут быть потери

Vladimir
05.05.2016
13:08:45
Резиновая :) UnboundedDequeBasedMailbox пока по памяти не просядет

Denis
05.05.2016
13:09:48
Потери кстати могут быть всегда )

Nikita
05.05.2016
13:09:58
Это не есть хорошо) нужно backpressure сделать

Vladimir
05.05.2016
13:11:34
Пока в этом месте не ожидается запредельных объемов, поначалу точно достаточно будет, да и потери не особо критичны

Nikolay
05.05.2016
16:33:40
https://twitter.com/eed3si9n/status/728240804800536576
это как раз с изменениями, которые должны значительно улучшить инкрементальную компиляцию
https://github.com/sbt/sbt/issues/1104 интересно, выходит так, что это появится только в sbt 1.0. а она не так скоро выйдет вроде

Dim
07.05.2016
12:00:25
Народ, кто какую scala либу для Redis юзает?

Bulbu
07.05.2016
12:01:46
юзаем джавовую jedis

Dim
07.05.2016
12:03:44
А почему не скаловую?
Мы использовали от debasishg давно (блокирующую), сейчас возможно ситуация изменилась и есть что-то поновее.

Bulbu
07.05.2016
12:15:13
исторически сложилось

Alexander
07.05.2016
13:14:26

Bulbu
08.05.2016
10:18:08
сорри за оффтоп, никто не подскажет онлайн курсы по конструированию (механике??)? Я даже не знаю как это правильно называется. Короче, если я сам хочу сделать полку на стене, которая бы как-то хитро опускалась и подымалась с помощью механизмов, где эти маны, которые мне надо курить?
натыкаюсь только на очень теоретические курсы

Google

Alexandr
10.05.2016
09:32:11
"Сделать полку, которая бы хитро опускалась" - зачем там конструирование/механика?
Теория для всяких маховиков, коробок передач и так далее.
Для полок common sense должно хватить.
Можно найти туториалы и по ним компоновать. В курс вряд ли кто то такое объединял.

Bulbu
10.05.2016
10:06:55
в личку отвечу

Grigory
11.05.2016
08:06:54
yo ребят; такая задачка есть:
лист фюч; некоторые из них могут упасть, и если падают с опр ошибкой то их надо опять поднять
это рекурсвиный рекавери получается
но проблема возникает когда конвертится лист фьюч в фючу листа: мне кажется что треды текут, и когда дожидаешься фьючу листа, все фбючи что поднялись на рекавери они не кончились

Vladimir
11.05.2016
08:10:04
а рекурсивный рекавери в busy-waiting не вырождается в конечном счете? Мб то что внутри в blocking обернуть?

Борис
11.05.2016
10:50:54
Фьючуры что поднялись после рекавера наверно не те которых дождалась фьючура листа

Grigory
11.05.2016
10:54:19
да
это не понятно; это новые фуьючеры похоже
накатал на коленке https://gist.github.com/pomadchin/33b53086cbf81a6256ddb452090e4e3b
но эта штука блочится в треде
и надо сделать нормальый афтер / авейт

Pavel
11.05.2016
10:58:14
сделай на акке - передаёшь фьючер вновь созданному актору, он всё контролирует. Вместо Thread.sleep используешь context.system.cheduler.scheduleOnce(...)

Grigory
11.05.2016
11:21:31
да после серфинга в сети выглядит как единсвтенное решение
):
но я сейчас кжсперментирую с таймером
def delay[T](delay: Long)(block: => Future[T]): Future[T] = {
val promise = Promise[T]()
timer.schedule(new TimerTask {
override def run(): Unit = {
promise.completeWith(block)
timer.purge()
}
}, delay)
promise.future
}
val timer = new Timer() // это джава таймер
если есть мысли по этому поводу то это очень привествуется; потому что смахивает на некую костыльность
и я не очень верю таймеру

IEvgenii
11.05.2016
11:22:49
о

Google

IEvgenii
11.05.2016
11:23:06
я знаю где ты этот снипет взял

Grigory
11.05.2016
11:23:09
cj
so

IEvgenii
11.05.2016
11:23:15
и точно скажу что он работает

Grigory
11.05.2016
11:23:20
отлично)
ну я изменил его
там тип T передавался
и в промис вставлялась complete(block)
пурджа не было (не уврене что он нужен)

IEvgenii
11.05.2016
11:24:19
BetManagementRoutes
ах
private def delay[T](delay: Long)(block: => Future[T]): Future[T] = {
val promise = Promise[T]()
val t = new Timer()
t.schedule(new TimerTask {
override def run(): Unit = {
promise.completeWith(block)
}
}, delay)
promise.future
}
вот такой снипет я юзаю
и он работает

Grigory
11.05.2016
11:24:37
отлично пашет знач

IEvgenii
11.05.2016
11:24:45
создает дилеи на фьюче

Grigory
11.05.2016
11:25:01
мне не нравится что он тамеры плодит и не чистит

IEvgenii
11.05.2016
11:25:09
подругому некак

Grigory
11.05.2016
11:25:15
он у мя забивает треды и типа не может создать новый
как воркэраунд я на функцию имею общий таймер

Google

IEvgenii
11.05.2016
11:25:54
ну так треды то коллектятся как закончат работу
таймер то заново создается каждый раз

Grigory
11.05.2016
11:29:13
да у мя сложно) я такую фигню делаю в каждой партиции спарка
короче вариант я как вижу из тестов (пока не на больших данных потестил) это таймер на партицию и это профит

IEvgenii
11.05.2016
11:29:57
акка есть ?
можешь через scheduler сдеать тоже самое

Grigory
11.05.2016
11:30:30
ну блин спарк же да :\
да хотел без акки
сейчас со всем пробую
хз как более элегантно
а есть сниппет с шедулером?
меня смущает что надо создавать акку систем и шуделить ею

IEvgenii
11.05.2016
11:32:04
у меня таже самая проблема, я не стал его использовать по причине того что на этот момент акки созданой еще нету и я его отбросил

Grigory
11.05.2016
11:32:39
+ спс за фидбек по поводу таймера
сча минут через 20 вброшу как чо
ci прогонит)

Sergey Tolmachev
11.05.2016
11:48:21
я на таймерах юзал такое
таймер который из netty

Grigory
11.05.2016
16:53:24
в общем не получилось
поведение Task'a из scalaz не повторить O:
футуры создаются чуть чуть не в тот момент и чуть чуть не вовремя синхрятся
и рандомным образом я не могу синхроизировать все фьючеры