
Alex
17.10.2016
18:33:39
из колоночных опенсорсных есть еще
https://github.com/greenplum-db/gpdb
https://en.wikipedia.org/wiki/MonetDB
платных тоже кроме вертики куча
в том числе конечно же SAP HANA :)

Daniel
17.10.2016
18:35:24

Google

Dmitry
17.10.2016
18:35:42
А как же Greenplum?

guga
17.10.2016
18:35:56
Эм, в друиде тоде о джоинах можно забыть
не для того они

Daniel
17.10.2016
18:38:20
гринплам добавит боли админам
нужно на немсобаку съесть, но при этом он действительно полноценная аналитическая БД с большим набором возможностей

Alex
17.10.2016
18:38:28
у нас вертика например

Daniel
17.10.2016
18:39:27
насколько знаю, вертика на том же уровне что и гринплам в разрезе решаемыхзадач
кликхаус сильно уже
про друид не в теме(
от тинькоффских двхшников была статья на хабре недавно об эксперименте сравнительном
https://habrahabr.ru/company/tcsbank/blog/310620/

Alex
17.10.2016
18:42:16
кликхаус сильно что?

Daniel
17.10.2016
18:42:34
блин, ударение %) более узок

Alex
17.10.2016
18:42:35
а, Уже с ударением на у

Daniel
17.10.2016
18:42:42
да, простите

Google

Nick
17.10.2016
20:10:43
А где apache Ignite и hazelcast

Alexander
17.10.2016
21:28:28
>Еще пара ламацких вопросов: А друид хорошо масштабируется? На больших объемах не деградирует? У нас преполагается пара теребайт данных, 20-30 лярдов однотипных записей. Фигня для него?
Хорошо масштабируется. У нас около 300 терабайт скомпрешенно хранится в друиде, которые получаются из около 100 миллиардов (что соответствует 100 Тб) входящих записей в день. В основном хорошо иметь мониторинг, чтобы понимать, что где тормозит.
Джойнов нет, но есть query-time lookups (http://druid.io/docs/latest/querying/lookups.html) - такие джойны для бедных. Мы джойним данные в риалтайме, но для этого надо заранее знать, что с чем джойнить.
Писать данные в риалтайме в друид можно, используем tranquility из самзы (https://github.com/druid-io/tranquility).

Alex
17.10.2016
21:36:12
потому что они вообще говоря не свободные а бесплатные

Alexander
17.10.2016
21:37:09
отзывчивое программирование ?

Alex
17.10.2016
21:37:18
хотя по уму они скорее в кредит, чем бесплатные - интерпретатор все равно в итоге придется писать

Vladimir
17.10.2016
21:38:00
угу, но с чьейто подачи их все переводят свободными, впрочем, главное, что они православны, что даже гугл подтверждает

Vadim
17.10.2016
22:04:14
Пыщ! http://scalalaz.ru/series-06.html

IEvgenii
18.10.2016
07:24:30
Пацаны ваще ребята!

Юрий
18.10.2016
07:32:07
этот выпуск был самым непонятным из всех

Daniel
18.10.2016
07:33:01
как по мне, самый интересный

Юрий
18.10.2016
07:33:23
я не говорил "не интересный"

Daniel
18.10.2016
07:34:26
одно другому не противоречит)

Nick
18.10.2016
08:11:31
чет про лук стали много говорить

Andrey
18.10.2016
08:12:27
осень

Wystan
18.10.2016
09:35:15
Посоны. Мне кажется, правительство специально вносит хаос в именования, чтобы ввести нас в заблуждение. Метод pure у ApplicativeFunctor в хаскеле называется point. А Free(монад) там называется Fix ("the fixed point of a functor”). А point в гомотопии = типа в теории типов = proof в логике.
Жалко, у меня рабочий день. Но я разберусь с этими секретными материлами. Ваш малдер!

Aleksey
18.10.2016
09:36:56
А может лучше Настя?

Alexander
18.10.2016
09:39:04
"Метод pure у ApplicativeFunctor в хаскеле называется point" - разве?

Wystan
18.10.2016
09:42:17
http://learnyouahaskell.com/functors-applicative-functors-and-monoids
а не тоже: pure :: a -> f a
point только у этого мужика используется: http://underscore.io/blog/posts/2015/04/14/free-monads-are-simple.html#fn:laws

Aleksey
18.10.2016
09:43:06
pure, point, return... я совсем запутался.

Google

Wystan
18.10.2016
09:43:16

Alexander
18.10.2016
09:43:36
у него вообще странно, point + flatmap ) я такого сочетания не видел еще
но у него point - это return он же unit по идее

Wystan
18.10.2016
09:46:33
point = unit = return = pure === def f[M[_], A](a: A): M[A] ?

Alexander
18.10.2016
09:47:39
ну pure - это операция на аппликативных функторах, ей не обязательно нужна монада

Wystan
18.10.2016
09:49:29
Да. Вообще монады - оверкилл, мы должны вернуться назад к природе, к аппликативным функторам.

Alex
18.10.2016
09:53:02
к профункторам

Andrey
18.10.2016
09:59:37
стал изучать ФП, теперь меньше люблю код коллег, а они - меня. что делать?

Lxk
18.10.2016
10:00:33
заменить их роботами
используя повышенную продуктивность за счет ФП

folex
18.10.2016
10:01:09
Прокачивать soft skills, и по-немногу показыать им плюсы различных подходов, и кидать статьями
либо сменить работу


Wystan
18.10.2016
10:01:25
Вообще, подходы везде разные, очень легко запутаться. в lyhfgg, аппликативные функторы - это первый шаг к IO:
http://learnyouahaskell.com/functors-applicative-functors-and-monoids
Второй шаг к IO был бы free monads, но в туториале этого нет
Многие скалисты пишут free monads через Coyoneda
http://underscore.io/blog/posts/2015/04/14/free-monads-are-simple.html#fn:laws
https://www.youtube.com/watch?v=oAu0MIe072M&index=17&list=PL9KXdMOfekvYn_x-GEPTp3wlX6iJk_Jmu
Один скалист сидит на героине: http://eed3si9n.com/herding-cats/Free-monoids.html
В cats делают акцент на то, что free monad нужна, чтобы "бесплатно" получать монады из функторов. Это нужно для того чтобы комбинировать вычисление (то есть писать for comprehension). Cats выглядят намного понятней и мотивированней, чем все остальное (+ вот эти лекции по ним https://www.youtube.com/watch?v=VWCtLhH815M&index=2&list=PLFrwDVdSrYE6dy14XCmUtRAJuhCxuzJp0#t=2.745142)


folex
18.10.2016
10:01:25
Еще можно подставить их, уволить, и нанять новых

Andrey
18.10.2016
10:01:43
беда в том, что главный не шарит

Wystan
18.10.2016
10:02:14
Это как с наркотиками. Как подсадить своего друга-алкаша-оопешника на героин

folex
18.10.2016
10:03:16
Подбежать и воткнуть иглу?

Aleksei
18.10.2016
10:03:34
охохо хор в грувях

Lxk
18.10.2016
10:03:37
герилья хор вариант, если успеть

Google

IEvgenii
18.10.2016
10:03:47
кто вкурсе как можно отправить сообщение актору и получить ответ в НЕ актера ?

Lxk
18.10.2016
10:03:59
потом просто сравните баги и всем все станет ясно, тоже что с тестами

Andrey
18.10.2016
10:04:01
хорошо, что на удаленке работаем. а то я умею каратэ и не умею спорить

Diemust
18.10.2016
10:04:43

Lxk
18.10.2016
10:04:52

folex
18.10.2016
10:05:29
Ответ на самом деле простой: написать в принимающем акторе соответствующую логику, которая ответит куда нужно

Lxk
18.10.2016
10:05:58
на сколько это будет лоу левелным? =))

Admin
ERROR: S client not available

IEvgenii
18.10.2016
10:07:08
есть метод, метод не в актере, метод отправляет аск к актеру, ждет ответ, ответ не приходит
что то делаю нетак, непонимаю что

folex
18.10.2016
10:07:27
Не отвечаешь обратно?

IEvgenii
18.10.2016
10:07:36
отвечаю
сендеру

folex
18.10.2016
10:07:43
куда? в sender()?
sender() -- функция от времени, нужно сохранять значение в переменную

IEvgenii
18.10.2016
10:08:50
эт я поняяял

folex
18.10.2016
10:08:55
case msg => Future { ... } onComplete { case _ => sender() ! Answer }
не сработает, тк sender() может быть чужим
тогда код показывай :)

IEvgenii
18.10.2016
10:11:34
implicit class RequestHttpRunner(val request: Request) extends AnyVal {
def run()(implicit system: ActorSystem): Future[HttpResponse] = {
implicit val ec = system.dispatcher
implicit val duration: Timeout = getTimeout()
lazy val managerRef: ActorRef = system.actorOf(Props(classOf[RequestManagerActor], getRoot(), duration), getName())
managerRef.ask(request).map {
case message: HttpResponse =>
println("received response in implicit")
message
case other =>
throw new IllegalStateException(s"received response: $other")
}
}
}
в map результат не приходит

Google

IEvgenii
18.10.2016
10:12:41
override def receive: Receive = {
case r@RequestHost(host) =>
val ref = context.actorOf(Props(classOf[RequestExecutorActor], host), s"${host.host}")
ref.ask(r.toRequestBody)(akkaTimeout, sender())
context.become(receive(Map(host -> ref.path)))
}
ресив следующего актора

Oleksandr
18.10.2016
10:12:57
подскажите кьюху с ограниченной длиной, которая при добавлении уже имеющегося элемента двигает его в самое начало (убирая из старого места)
оно-то простое, но не хочу велосипедить и писать кучу ненужных тестов

IEvgenii
18.10.2016
10:13:25
override def receive: Receive = {
case requestBody: RequestBody =>
val senderRef = sender()
sendRequest(requestBody2HttpRequest(requestBody)).foreach{
value =>
senderRef ! value
}
}
последний етап
там респонс приходит

Diemust
18.10.2016
10:14:43
сделай через pipeTo, а не через foreach
это не решение проблемы, но так лучше =)

IEvgenii
18.10.2016
10:14:58
принято

folex
18.10.2016
10:16:10
@e8kor и больше не нужно вот так код постить, есть же всякие pastebin

IEvgenii
18.10.2016
10:17:09
принято

folex
18.10.2016
10:18:33
Может оно просто не успевает?

IEvgenii
18.10.2016
10:18:42
один и тот же актор может иметь больше одной ссылки ?

folex
18.10.2016
10:19:06
ну и у тебя только один реквест отправляется? Может первый обрабатывается, а второй валится?
Там достаточно непонятный context.become во втором ресиве


Wystan
18.10.2016
10:19:51
стал изучать ФП, теперь меньше люблю код коллег, а они - меня. что делать?
Мое видение про переход на фп такое. Чистое фп - это как производство и употребление кристаллического метамфетамина, кустарно максимум новичок может грязный винт сварить. Я на первом проекте изначально делал dependency injection через reader monad, все джобы на спарке обернул в ReadWriteStateMonad и несистематчино присыпал это scalaz.Task. Это оказалось ужасно в итоге, единственный плюс, что человек после меня не смог это сразу сломать, поэтому пару месяцев после моего ухода это все еще работало. Так что подсаживатсья надо плавно. Сначала трава - это option вместо null. Потом грибы - это чтобы все функции, которые могут фейлиться, возвращали Validation тип (Either[CustomError, _]). Потом комбинировать их через for comrehension. Потом начать комбинировать option c future (трава с табаком). Потом сформулировать бизнес-логику как алгберу - это уже кокаин. Дальше будет сложно находить места, куда можно присунуть Free Monad(будешь как наркоман в поисках неиспользованной вены, все они где-то глубоко под кожей). Ну а дальше я сам не заходил.
я пасту написал, но обсуждение уже пошло про какие-то серьезные вещи.


Alex
18.10.2016
10:21:46
после фримонад надо начинать упарываться по схемам рекурсии
зигоморфизмы гистоморфизмы вот это всё