@scala_ru

Страница 4 из 1499
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
исторически сложилось

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:

футуры создаются чуть чуть не в тот момент и чуть чуть не вовремя синхрятся

и рандомным образом я не могу синхроизировать все фьючеры

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