
Sergey
18.04.2017
09:56:03
Хороший код попадает на гитхаб а плохой куда?

Daniel
18.04.2017
09:56:22
в энтерпрайз

Sergey
18.04.2017
09:56:27
в прод

Evgeny
18.04.2017
09:56:40
на sourceforge

Google

Vasily
18.04.2017
09:57:41
Хороший код попадает сразу в рай для хорошего кода, поэтому в реальности его не найти

Sergey
18.04.2017
09:57:43
На порнохаб

Evgeny
18.04.2017
09:58:02
govnokod.ru ещё есть

Sergey
18.04.2017
09:58:34
хороший код - отсутствие кода ж

Sergey
18.04.2017
09:58:57
О там php восновном)

Nick
18.04.2017
10:10:40

Alex
18.04.2017
10:24:40
vue.js еще

Aleksey
18.04.2017
10:25:17

Dmitry
18.04.2017
11:11:08
друзья, а кто-то запускает на спарке свое приложение целиком? типа, набольшой рест сервис, чтобы дергать ad hoc запросы?

KrivdaTheTriewe
18.04.2017
11:18:00
стриминг или батч процессинг?

Dmitry
18.04.2017
11:18:38
не, обычное akka-http приложение, которое висит и делает запросы, как к обычной БД
но только вместо БД - спарковый контекст

KrivdaTheTriewe
18.04.2017
11:22:36
Мне очень понравилась строчка в sbt для 1.0-beta Scala version used by the build is updated to 2.10.6. #2311 by @eed3si9n

Google

Iaroslav
18.04.2017
11:59:22
а вопрос какой?

Dmitry
18.04.2017
12:17:26
Да вопрос просто узнать насколько продакшн реади. Во всех примерах - или стриминг, или батч, или какой-то Джоб сервер сбоку

Iaroslav
18.04.2017
12:18:12
Да вполне себе отлично. Есть бока в керберос кластере, но решаемы, в целом.
Spark job server был той еще лажей. Сейчас не знаю. Последний раз туда смотрел год назад.
Он тогда вообще не сапортил сабмит джоб в пределах одного спарк контекста. Хоть это вроде сделали

Dmitry
18.04.2017
12:40:03
окей, спасибо. буду тестить

Iaroslav
18.04.2017
12:52:13

Oleksandr
18.04.2017
12:54:32


Iaroslav
18.04.2017
13:05:35
что первое в голову пришло. по секьюрити части: 1. вечная проблема с делегейшен токенами. 2. очень кривая поддержка impersonation'a (могу подробнее об этом, если интересно).
общие спарковские бока:
1. Постоянная борьба с коджен эксепшенами. Особенно если датасет очень широкий, и ты пытаешься перегнать RDD в DataFrame.
2. Мелкие траблы со схемой, например точки в именах колонок. Пробелы в именах колонок, когда источник данных - CSV, а сохранить ты хочешь в паркет. И тд и тп.
3. Встроенный CSV ридер - это обнять и плакать, к сожалению. Поддерживает довольно ограниченное количество видов датасетов. А выведенных настроек чуть менее чем недостоачно, чтоб хендлить коннер кейсы.
4. поддержка UDAF. полное разочарование, пришлось отказаться.
5. и многое многое.
то есть спарк очень крут. но как только делаешь что-то дальше word count, начинается борьба. Борьба с самим спарком, а не реализацией логики.
все время пытаешься обойти ограничения, или не самый удачный дизайн
с кешированием были бока точно. Не помню точно что, но упиралось в ограничения по размеру, когда спарк сбрасывал данные на диск.


Oleksandr
18.04.2017
13:14:36
интересно, спасибо

Юрий
18.04.2017
13:29:56

KrivdaTheTriewe
18.04.2017
13:32:48

Юрий
18.04.2017
13:38:52
Если релиз будет с 2.10, это будет полный провал

KrivdaTheTriewe
18.04.2017
13:45:51
а с другой стороны, какая разница?
если это какой-то бинарь

Митко Соловец?
18.04.2017
13:50:16
https://t.me/jvmchat

Google

Митко Соловец?
18.04.2017
13:50:22
у нас тут дискуссия появилась
когда нужны мохнады в прикладнухе
милости просим шарящих присоединиться к обсуждению

KrivdaTheTriewe
18.04.2017
14:04:06
пусть сюда идут

Aleksey
18.04.2017
14:04:50
https://t.me/scala_ru <---- большой выбор монад и аппликативных функторов на любой вкус!

Alexandr
18.04.2017
14:11:09
@like

Wystan
18.04.2017
15:00:00
Имхо, самое кривое место у спарка - это его стриминг. Чо-то не верится что он хоть какую-то нагрузку держит.


Iaroslav
18.04.2017
15:15:35
ничего не скажу за стримминг, особенно структурированный
если у вас конечно не 3 колонки в датасете

KrivdaTheTriewe
18.04.2017
15:22:57

KrivdaTheTriewe
18.04.2017
15:23:15
не знаю, много это или мало, на двух экзекьюторах хорошо живёт
Там только с рейтом проблемы, в том плане, что нужно знать нагрузку заранее, динамически ресурсы не выделяются

Iaroslav
18.04.2017
15:38:34

KrivdaTheTriewe
18.04.2017
15:39:05
ну ты для кафки рейт же максимальный всё равно задаешь пер екзекьютор

Iaroslav
18.04.2017
15:50:23
Ааааа, кафка

Alex
18.04.2017
15:55:25
аааа в Африке кафка вот такой ширины

KrivdaTheTriewe
18.04.2017
16:02:27

folex
18.04.2017
16:11:36
https://github.com/linuxkit/linuxkit/blob/master/docs/security.md#type-safe-system-daemons эх, и ни слова про скалу %)

Google

Alex
18.04.2017
16:21:54
скаланатив спешит на помощь

folex
18.04.2017
16:22:15
поскорее бы её заметили
а то щас весь линукс на тайпсейф языки перепишут, а скалка не у дел!

KrivdaTheTriewe
18.04.2017
16:27:13
как джависту объяснить , что null это не оч наиболее эфективно

Oleg
18.04.2017
16:28:17
как джависту объяснить , что null это не оч наиболее эфективно
In 2009 C.A.R. Hoare stated[7][8] that he invented the null reference in 1965 as part of the Algol W language. In that 2009 reference Hoare describes his invention as a "billion-dollar mistake":
I call it my billion-dollar mistake. It was the invention of the null reference in 1965. At that time, I was designing the first comprehensive type system for references in an object oriented language (ALGOL W). My goal was to ensure that all use of references should be absolutely safe, with checking performed automatically by the compiler. But I couldn't resist the temptation to put in a null reference, simply because it was so easy to implement. This has led to innumerable errors, vulnerabilities, and system crashes, which have probably caused a billion dollars of pain and damage in the last forty years.

Vladislav
18.04.2017
16:28:49

Admin
ERROR: S client not available

Vladislav
18.04.2017
16:28:57
если ты так обьясняешь, то вообще никому ничего не обьяснишь

Alex
18.04.2017
16:30:06
не только лишь всем

?Ivan
18.04.2017
16:39:04

Oleg
18.04.2017
16:39:11
Но вообще есть же jvm языки, которые активно используют null как first-class value, тот же clojure или..... Kotlin возможно

Sergey
18.04.2017
16:49:45
Друзя, есть мастера akka-streams, можете посоветовать?
Мне нужно создать Source, который будет по сути рекурсивно конкатенировать несколько Source, и параметры, с которыми будет создаваться каждый следующий Source, будут известны только по завершению предыдущего.

Aleksey
18.04.2017
16:52:54
Scalalaz #19 - Гомотопический http://scalalaz.ru/series-19.html

folex
18.04.2017
16:56:01

Борис
18.04.2017
17:07:33

Sergey
18.04.2017
17:33:34

Alex
18.04.2017
17:36:30
А гость 19-го выпуска подкаста в чатике есть?
Который Дмитро Митин

Евгений
18.04.2017
17:41:33

Alex
18.04.2017
17:41:51
Спасибо ?

Google

Борис
18.04.2017
18:34:34

Denis
18.04.2017
19:33:53
http://www.scala-lang.org/news/releases-1Q17.html

?Ivan
18.04.2017
20:03:21
http://docs.scala-lang.org/sips/completed/trailing-commas.html?_ga=1.58152168.355225214.1482148898

Lev
18.04.2017
20:09:24
Ну теперь-то заживём!

Oleg
18.04.2017
20:10:34

Lev
18.04.2017
20:12:21

Юрий
19.04.2017
02:20:57
чёт в последнем скалалазе печально со звуком, особенно у гостя

Alexandr
19.04.2017
04:28:50
Кстати, два вопроса: чем слушать по списку подкасты на Андроиде? И зачем убрали оглавление со всеми подкасты и?

Denis
19.04.2017
04:49:20
https://softwaremill.com/comparing-scala-relational-database-access-libraries/

Aleksei
19.04.2017
04:55:55
а кто как собирает логи со спарка в облако?

Denis
19.04.2017
05:24:14
https://github.com/typelevel/cats/issues/1617

guga
19.04.2017
06:27:45


Alexander
19.04.2017
06:47:52
Есть знатоки макросов? Имею:
trait Transaction[+T]
trait TransactionWrapper[Tx[_] <: Transaction[_], N[_]] {
def wrap[T](repr: N[T]): Tx[T]
def unwrap[T](tx: Tx[T]): N[T]
}
case class LocalDBIOTransaction[T](dbio: DBIO[T]) extends Transaction[T]
Есть подобный бойлерплейт:
implicit object LocalDBIOTransactionWrapper extends TransactionWrapper[Transaction, DBIO] {
override def wrap[T](repr: DBIO[T]): Transaction[T] = LocalDBIOTransaction(repr)
override def unwrap[T](tx: Transaction[T]): DBIO[T] = tx match {
case LocalDBIOTransaction(dbio) => dbio
}
}
Пишу макрос:
def instance[Tx[_] <: Transaction[_], N[_]]: TransactionWrapper[Tx, N] =
macro transactionWrapperImpl[Tx, N]
def transactionWrapperImpl[Tx[_] <: Transaction[_], N[_]](c: blackbox.Context)
(implicit txTag: c.WeakTypeTag[Tx[_]],
nTag: c.WeakTypeTag[N[_]]): c.Expr[TransactionWrapper[Tx, N]] = {
import c.universe._
val txTpe = txTag.tpe
val nTpe = nTag.tpe
val txTermNme = TermName(txTpe.typeSymbol.name.toString)
c.Expr[TransactionWrapper[Tx, N]](
q"""
new TransactionWrapper[$txTpe, $nTpe] {
override def wrap[T](repr: $nTpe[T]): $txTpe[T] = $txTermNme[T](repr)
override def unwrap[T](tx: $txTpe[T]): $nTpe[T] = tx match {
case ${cq"$txTermNme(repr) => repr"}
}
}
"""
)
}
TransactionWrapper.instance[LocalDBIOTransaction, DBIO]
В последней строке ругается, что Any does not take type parameters. Дело не в реализации методов, пробовал менять на ??? - то же самое. Возможно что-то в сигнатурах, но что?
при этом в логе выглядит всё хорошо, если этот код вставить в файл - он компилится http://prntscr.com/ey5kzw


Alexandr
19.04.2017
07:08:29
Спасибо, попробую. У меня Смарт как читалка, поэтому детский вопрос.

Artemko
19.04.2017
07:17:48

Andrey
19.04.2017
07:54:53
Из платных Pocket Casts лучший.

Alex
19.04.2017
08:00:47