Grigory
11.05.2016
16:58:28
да не;
на тасках эту задачку решить просто:
implicit class TaskBackoff[A](task: Task[A]) {
/**
* Implement non-blocking Exponential Backoff on a Task.
* @param p returns true for exceptions that trigger a backoff and retry
*/
def retryEBO(p: (Throwable => Boolean) ): Task[A] = {
def help(count: Int): Future[Throwable \/ A] = {
val base: Duration = 52.milliseconds
val timeout = base * Random.nextInt(math.pow(2,count).toInt) // .extInt is [), implying -1
task.get flatMap {
case -\/(e) if p(e) =>
help(count + 1) after timeout
case x => Future.now(x)
}
}
Task.async { help(0).unsafePerformAsync }
}
}
Юрий
11.05.2016
16:59:18
А почему нельзя их и взять?
Grigory
11.05.2016
16:59:47
хотим выпилить от скалаза зависимость
Google
Юрий
11.05.2016
16:59:49
Еще в monix есть Task, как раз сегодня слушал доклад про него
Grigory
11.05.2016
17:00:13
потому что у нас скалаз ток изза монокля который потенциально на кошек мигрирует
Dim
11.05.2016
22:30:46
Монокль вам зачем? У softwaremil есть очень лёгкие линзы.
Grigory
12.05.2016
05:31:30
Да исторически сложилось) ну моноколь быстрые, но тянут за собой скалаз
да и от скалаза избавиться не удалось пока; список фьюч, которые с таймаутом рикаверятся не так просто синхронизировать оказалось ._.'
Slavik
12.05.2016
08:51:39
кстати, я недавно на вот такую либу набрел: https://github.com/pathikrit/sauron
Правда, пока активно не использовал, но API, имхо, поприятнее, чем у аналогов
Nikita
12.05.2016
09:14:09
ну https://github.com/adamw/quicklens тоже ничего
Dmitry
12.05.2016
09:21:57
Я правильно понимаю, что линзы нужны для трансформации неизменяемых структур данных?
*Были придуманы
Grigory
12.05.2016
09:24:07
да
Nikita
12.05.2016
09:24:31
ага, чтобы слишком много не делать вложенных вызовов .copy
Aleksey
12.05.2016
09:26:39
Саурон хорошее название.
Google
Dmitry
12.05.2016
09:29:33
Блин, крутая штука. Я делал так:
case class Pawn(side: Side, position: Position, board: Option[Board]) extends Piece {
def withBoard(board: Board): Piece = Pawn(side, position, Some(board))
}
а теперь можно просто заюзать линзы
Grigory
12.05.2016
09:30:22
да, используй линзы
тут зависит от целей) но я из своего опыта скажу главное не шейплез линзы) и не потому что они страшные или шейплез страшный а потому что они медленные
компиляция экспоненциально растет
а остальное используй; тут дело вкуса и зависимостей
Slavik
12.05.2016
09:42:51
> @pomadchin
не потому что они страшные или шейплез страшный а потому что они медленные
+100
Alex
12.05.2016
10:54:37
линзы это всего лишь морфизмы между профункторами с силой, what's the problem?
Vyatcheslav
12.05.2016
11:24:22
Я тоже так могу: "Линейное уравнение продуцирует интеграл Пуассона. К тому же аксиома концентрирует неопределенный интеграл." :D (стырено отсюда, если кто недавно подключился к интернету: https://yandex.ru/referats )
Aleksei
12.05.2016
11:25:48
линза с силой это сфинктер =)
Aleksey
12.05.2016
11:27:19
аппликативный сфинктер
Dmitry
12.05.2016
11:35:21
> @clayrat
линзы это всего лишь морфизмы между профункторами с силой, what's the problem?
Мне иногда кажется, что это такая манера общения)
https://i.gyazo.com/a92a1a28508d06729b0f81fcbb8c34b6.png
Alex
12.05.2016
11:36:32
линза с силой это тавтология ;)
если в основе просто профунктор - изоморфизм, с силой - линза, с выбором - призма
а вообще это была шутка на тему monad is just a monoid in the category of endofunctors ?
Dmitry
12.05.2016
11:38:13
вот, откуда оно пошло
=)
многие говорят в таком стиле
“это всего лишь))" я про это
Alex
12.05.2016
11:38:50
на самом деле эта фраза тоже шутка, всерьез так никто не объяснял
скорее всего взято из учебника макклейна
Google
Dmitry
12.05.2016
11:39:54
https://i.gyazo.com/68bcb90a9461051337bd82a6f73cee32.png
И вправду, смешно ж
Alex
12.05.2016
11:41:42
ну профунктор это типа стрелки b -> c
можно замапить ковариантную функцию a->b, получим стрелку a => c
Viacheslav
12.05.2016
11:42:16
что означает слово "типа"?
Alex
12.05.2016
11:42:37
или замапить контравариантную функцию c->d, получим стрелку b => d
Dmitry
12.05.2016
11:43:21
профунктор - функция над ->?
для определенных аргументов
Alex
12.05.2016
11:43:45
скажем так, функция это разновидность профунктора, но бывают и другие
instance profunctorFn :: Profunctor (->) where
dimap a2b c2d b2c = a2b »> b2c »> c2d
»> здесь просто композиция функций, пюрскриптовый синтаксис :_
Dmitry
12.05.2016
11:46:36
А как это прочитать?
“a маппиться на d, через что-то”
?
Alex
12.05.2016
11:47:29
можно и так наверное
Dmitry
12.05.2016
11:53:03
типа линза - функция над функция с определенным искажением
Alex
12.05.2016
11:59:10
ну вообще линза это пара функций i->o и (i,o')->i'
Grigory
12.05.2016
11:59:51
это просто пара put / get функций
и не больше не меньше
Alex
12.05.2016
12:00:05
типа получить вьюху из модели и восстановить новую модель из новой вьюхи и старой модели
Grigory
12.05.2016
12:05:03
и два закона есть)
Google
Grigory
12.05.2016
12:05:06
очевидных
get (put v s) = v
put(get s) s = s
:D
Alex
12.05.2016
12:05:52
еще иногда добавляют
put o’ (put o i) = put o’ i
Grigory
12.05.2016
12:06:31
да там много
есть еще законы частичного применения
Alex
12.05.2016
12:10:42
в общем-то смысл определения через профункторы вроде бы именно в том, что законы автоматически выполняются
Dim
13.05.2016
00:18:56
quicklens как раз в Sowtwaremil разрабатывался, судя по пакетам. Годная, использую.
Anton
13.05.2016
08:50:52
Прошу прощения за вторжение. Помогите, пожалуйста, найти сильного Senior Scala Developer разрабатывать с нами серверную часть www.Acotor.im
Actor - это мессенджер под iOS, Android, веб и десктопы c открытым исходным кодом. Мы довольно популярны на гитхабе (https://github.com/actorapp/actor-platform, постоянно пилятся форки. Гарантируем интересные технические задачи, адекватную команду, уважительную зарплату на уровне. Офис находится в Петербурге, но возможна и удаленка.
Писать можно мне на anton@actor.im Заранее благодарю.
Nikita
13.05.2016
08:54:20
что-то у вас ссылка битая
Grigory
13.05.2016
08:54:38
actor.im
)
Anton
13.05.2016
08:54:45
и вправду, спасибо)
Nikita
13.05.2016
08:55:55
а откуда название пошло? потому что изнутри все на акковских акторах работает?
Anton
13.05.2016
08:56:37
Акковские акторы безусловно сильно вдохновили создателей проекта
Но да, внутри все примерно так
IEvgenii
13.05.2016
08:58:17
фултайм ищете ?
Anton
13.05.2016
08:58:22
Да
Nikolay
13.05.2016
10:46:49
а откуда название пошло? потому что изнутри все на акковских акторах работает?
как и сказал наш коллега - на стороне сервера действительно используются акковские акторы. также примерно с момента выходы stable релиза(пусть и experimental) используются akka streams и akka http. Раньше была связка акторы + slick + postgres, сейчас ключевые моменты перевели на akka persistence, event-ы пишутся в postgres. В дальнейшем есть планы отвязаться от одного хранилища в принципе.
на клиентах кстати тоже используется модель акторов, только уже самописная. вообще весь проект очень интересный с технической точки зрения. например клиентская логика шарится между всеми платформами, под которые делаем клиентов(ios, android, web). есть кодогенерация схемы API, которую используют клиенты и сервер, и другие интересные вещи.
?Ivan
13.05.2016
11:10:24
Google
Anton
13.05.2016
11:33:51
По договоренности, в районе 120-200
?Ivan
13.05.2016
11:40:57
Alexandr
13.05.2016
11:41:44
Как вы считаете, за удаленку оплата должна быть выше, чем за офис или ниже?
Nikolay
13.05.2016
11:42:26
а почему она должна отличаться?
?Ivan
13.05.2016
11:42:29
Это холиварный вопрос.
Есть много причин по которым она может отличаться как в одну так и другую сторону
Pavel
13.05.2016
11:42:53
Должна быть выше - потому что экономия на офисном месте, но по факту хорошо если такая же
Andrey
13.05.2016
11:43:33
Так и что, что экономия на офисном месте? Это деньги работодателя. Работа выполняетя одна и та же
Nikolay
13.05.2016
11:43:42
соглашусь тут
Alexandr
13.05.2016
11:44:08
По факту, работая на удаленке, работник имеет +2 часа дополнительного времени за счет отсутствия необходимости добираться до офиса
Anton
13.05.2016
11:44:37
А иногда и море за окном :)
Andrey
13.05.2016
11:45:06
А иногда наоборот: в офисе море за окном, а дом в жопенске каком-то
Alexandr
13.05.2016
11:45:26
44 часа в месяц. По-моему, логично, чтобы компенсировали это время в ЗП. Нет?
Daniel
13.05.2016
11:45:38
работник может жить при желании в 5 минутах от работы, это не имеет отношения к делу
что точно страдает на удаленке, это комуникация
ну и плюс не так много людей, которые по натуре своей могут с нормальной продуктивностью работать без какого-либо контроля
Pavel
13.05.2016
11:45:39
работа выполняется та же, но с меньшими расходами работодателя, значит работодатель имеет некоторый профит. Куда он пускает этот профит: на увеличение зп или на что другое, конечно дело работодателя
?Ivan
13.05.2016
11:45:54
А еще работая на удаленке можно постоянно отвлекаться на орущих детей, перф соседей и т.п. В общем не все так однозначно
Pavel
13.05.2016
11:46:06
да, тоже верно
Dmitry
13.05.2016
11:46:12
Допустим, что важно не сколько человек работает, а как и что он делает.
Да пусть хоть 2 часа работает, если он успевает за это время сделать то, что запланировал