
Alexey
22.12.2017
14:50:32
Спасибо за видео выше, оно, в отличии от строчки кода для проверки моих предположений кас-но F[_] в Stream, не помогло, но принесло эстетическое удовольствие. Вопрос ближе к теме — правильно ли я понимаю, что F[_] в fs.Stream — абсолютно произвольная обертка вида:
trait Ex[O] {} к которой никаких требований не предъявляется, и которая служит только для определения формата передаваемых данных по стриму? Если так — то в чем глубинный смысл делать разделение на F[_] и O, если можно было, кхм, сделать передачу чего угодно?
я fs не знаю, но смею предположить что это дырка нужна, чтобы потом указать на чем ты будешь исполнять этот стрим
например на Future или IO

Vladislav
22.12.2017
14:58:54
все, нашел из ошибки откуда это брать :
[error] found : List[String]
[error] required: org.apache.kafka.streams.KeyValue[_ <: String, _ <: String]


Alexey
22.12.2017
15:01:04
Спасибо за видео выше, оно, в отличии от строчки кода для проверки моих предположений кас-но F[_] в Stream, не помогло, но принесло эстетическое удовольствие. Вопрос ближе к теме — правильно ли я понимаю, что F[_] в fs.Stream — абсолютно произвольная обертка вида:
trait Ex[O] {} к которой никаких требований не предъявляется, и которая служит только для определения формата передаваемых данных по стриму? Если так — то в чем глубинный смысл делать разделение на F[_] и O, если можно было, кхм, сделать передачу чего угодно?
Пример из доки намекает
import cats.effect.{IO, Sync}
import fs2.{io, text}
import java.nio.file.Paths
def fahrenheitToCelsius(f: Double): Double =
(f - 32.0) * (5.0/9.0)
def converter[F[_]](implicit F: Sync[F]): F[Unit] =
io.file.readAll[F](Paths.get("testdata/fahrenheit.txt"), 4096)
.through(text.utf8Decode)
.through(text.lines)
.filter(s => !s.trim.isEmpty && !s.startsWith("//"))
.map(line => fahrenheitToCelsius(line.toDouble).toString)
.intersperse("\n")
.through(text.utf8Encode)
.through(io.file.writeAll(Paths.get("testdata/celsius.txt")))
.run
// at the end of the universe...
val u: Unit = converter[IO].unsafeRunSync()

Google


Vladislav
22.12.2017
15:23:26
а как запускать приложения (которые я запускаю с помощью команды sbt run) чтобы их можно было обнаружить 'ps aux'
(нужно замерить потребление)
А то по имени приложения оно ничего не находи, зато висят безымянные процессы sbt:
vlad 70854 70.3 9.1 6848816 762388 s009 R+ 5:11PM 1:46.10 /usr/bin/java -Xms1024m -Xmx1024m -XX:ReservedCodeCacheSize=128m -XX:MaxMetaspaceSize=256m -jar /usr/local/Cellar/sbt/1.0.4/libexec/bin/sbt-launch.jar run
vlad 62596 8.8 8.9 6839076 742636 s007 S+ 2:12PM 5:27.13 /usr/bin/java -Xms1024m -Xmx1024m -XX:ReservedCodeCacheSize=128m -XX:MaxMetaspaceSize=256m -jar /usr/local/Cellar/sbt/1.0.4/libexec/bin/sbt-launch.jar
vlad 62559 0.0 0.0 4279596 752 s007 S+ 2:12PM 0:00.02 bash /usr/local/Cellar/sbt/1.0.4/libexec/bin/sbt
vlad 71733 0.0 0.0 4267752 356 s006 R+ 5:20PM 0:00.00 grep —color=auto —exclude-dir=.bzr —exclude-dir=CVS —exclude-dir=.git —exclude-dir=.hg —exclude-dir=.svn sbt
vlad 70817 0.0 0.0 4279596 752 s009 S+ 5:11PM 0:00.02 bash /usr/local/Cellar/sbt/1.0.4/libexec/bin/sbt run
и я не могу опознать нужный


Alexey
22.12.2017
15:24:02
не запускать так

Nikolay
22.12.2017
15:24:17
попробуй fork := true
в build.sbt

Vladislav
22.12.2017
15:24:32
спс, момент

Alexey
22.12.2017
15:25:16
Ну по хорошему конечно надо собрать и запустить отдельно

Nikolay
22.12.2017
15:25:42
да человеку вон замерять нужно - срочно же
@vlad1777d https://github.com/sbt/sbt-assembly можешь попробовать собрать jar-ку этим

Vladislav
22.12.2017
15:26:26
@rockjam , спасибо большое, но все равно не пишется название процесса =)

Nikolay
22.12.2017
15:26:42
хм, там classpath пишется?
покажи вывод ps aux сейчас

Vladislav
22.12.2017
15:26:51
спасибо, сейчас попробую собрать jar-ky
момент

Google

Nikolay
22.12.2017
15:27:08
просто я не совсем понимаю что именно ты хочешь увидеть

Vladislav
22.12.2017
15:27:24
vlad 72055 182.2 5.8 6818344 485900 s007 R+ 5:25PM 0:51.21 /usr/bin/java -Xms1024m -Xmx1024m -XX:ReservedCodeCacheSize=128m -XX:MaxMetaspaceSize=256m -jar /usr/local/Cellar/sbt/1.0.4/libexec/bin/sbt-launch.jar
vlad 70854 50.1 11.6 6850880 976104 s009 S+ 5:11PM 2:17.21 /usr/bin/java -Xms1024m -Xmx1024m -XX:ReservedCodeCacheSize=128m -XX:MaxMetaspaceSize=256m -jar /usr/local/Cellar/sbt/1.0.4/libexec/bin/sbt-launch.jar run
vlad 72359 0.0 0.0 4267752 420 s006 R+ 5:27PM 0:00.00 grep —color=auto —exclude-dir=.bzr —exclude-dir=CVS —exclude-dir=.git —exclude-dir=.hg —exclude-dir=.svn sbt
vlad 72018 0.0 0.0 4287788 752 s007 S+ 5:25PM 0:00.02 bash /usr/local/Cellar/sbt/1.0.4/libexec/bin/sbt
vlad 70817 0.0 0.0 4279596 752 s009 S+ 5:11PM 0:00.02 bash /usr/local/Cellar/sbt/1.0.4/libexec/bin/sbt run
я вижу эти процессы
но у меня два разных: продюсер и стримс

Alexey
22.12.2017
15:27:50
2-ой вроде твой

Vladislav
22.12.2017
15:27:51
я не могу определить где кто )
у меня 2 сразу запущены

Nikolay
22.12.2017
15:28:05
а, ясно. ну тогда лучше sbt assembly сделай

Vladislav
22.12.2017
15:28:10
и я меряю как они на одной машине работают
понял, спасибо большое

Nikolay
22.12.2017
15:28:34
тогда у тебя будут разные имена у jar-ок

Vladislav
22.12.2017
15:28:57
благодарю )

Daniel
22.12.2017
15:31:48
Или переименовать мейн в осмысленное, тогда jps процессы покажет

Vladislav
22.12.2017
15:33:21
а что за мейн ?
имеется ввиду мейн класс ? если да, тоу меня они названы Streams, Producer

Daniel
22.12.2017
15:33:56
Да, они
Если запускать не в сбт, то jps покажет их имена и пиды

Vladislav
22.12.2017
15:34:27
не помогает, видимо )

Nikolay
22.12.2017
15:34:56
а да, кстати можешь через sbt запустить как sbt runMain Producer и sbt runMain Streams
тогда наверное в ps aux так и будет

Google

Daniel
22.12.2017
15:35:37
Это же только выбор мейн класса

Vladislav
22.12.2017
15:35:59
короче, нужно собирать jar, как я понял )

Daniel
22.12.2017
15:36:09
Да

Vladislav
22.12.2017
15:36:18
ок

Nikolay
22.12.2017
15:36:26
rockjam 27261 268 3.2 8134296 533244 pts/2 Sl+ 18:36 0:21 java -Xms4096m -Xmx4096m -XX:ReservedCodeCacheSize=512m -XX:MaxMetaspaceSize=1024m -jar /usr/share/sbt/bin/sbt-launch.jar runMain foo

Vladislav
22.12.2017
15:36:42
стоп, момент, попробую

Daniel
22.12.2017
15:37:10

Alexey
22.12.2017
15:37:28
Ну в замере же еще будут ресурсы от sbt

Nikolay
22.12.2017
15:37:31
ща лайфкодинг sbt в твиттер выложу

Daniel
22.12.2017
15:39:13

Vladislav
22.12.2017
15:39:43
[error] Expected whitespace character
[error] runMain

Vladislav
22.12.2017
15:39:52
это после sbt runMain Producer

Grigory
22.12.2017
15:40:11
ты эт просто сделай ран
и выбери что те запускать при наличии множества мейнов то

Alexey
22.12.2017
15:40:26
sbt "runMain Producer"

Vladislav
22.12.2017
15:41:15
спасибо
теперь все видно )

Nikolay
22.12.2017
15:41:37
так, ребята, мы же еще не советовали sbt native packager и запуск в докере

Daniel
22.12.2017
15:42:02
И грааль

Google

Nikolay
22.12.2017
15:42:20
@gurinderu видимо все проглядел

Nick
22.12.2017
15:46:09
ась?

Igor
22.12.2017
17:10:25
Последний глупый вопрос по fs2 на сегодня — сколько не искал — не нашел ничего о возможности/невозможности создания бесконечных потоков, в которых эмиссии происходят каким-то "третьим" компонентом. Можете прояснить пожалуйста?

Alexey
22.12.2017
17:42:36

Igor
22.12.2017
17:42:54

Admin
ERROR: S client not available

Nick
22.12.2017
17:45:55
Вообще есть реализация и реактивщины
https://github.com/zainab-ali/fs2-reactive-streams

Alex
22.12.2017
21:28:29
https://www.iravid.com/posts/fp-and-spark.html

Andrey
23.12.2017
03:26:58
https://www.kaggle.com/c/jigsaw-toxic-comment-classification-challenge

Юрий
23.12.2017
03:29:53
Господи, вот это вин
999 members

Yuri
23.12.2017
10:56:12
1000!!!

Александр
23.12.2017
11:02:21
главное не убыть теперь

Kirill
23.12.2017
11:33:03
Будут розыгрыши бетховенов в честь знаменательного события?

Alexandr
23.12.2017
12:27:53

Aleksei
23.12.2017
15:14:27
а вот и 1001 участник конфы! ЮХУ! Aleksey

Aleksey
23.12.2017
15:16:18

Aleksei
23.12.2017
15:16:43
ну 1001 тоже отличный вариант, но если считать с нуля то индекс у тебя будет как раз таки 1000

sherzod
23.12.2017
15:16:45
до юбилея еще 23 участника

Google

Александр
23.12.2017
15:29:06

Aleksey
24.12.2017
09:19:45
Котоны, кто в курсе, как заставить scalapb юзать ByteBuffer вместо гугловского ByteString?
Или акковский байтстринг к примеру.

Nick
24.12.2017
09:36:16
или ты имеешь ввиду прям генерировать тебе ByteBuffer?

Aleksey
24.12.2017
09:44:28
ага

Nick
24.12.2017
09:45:38
не, генерировать он точно будет ByteString, можешь только вызвать asReadOnlyByteBuffer

Aleksey
24.12.2017
09:47:40
плохо. не хочется туда-сюда конвертить.

Nick
24.12.2017
09:48:51
можешь сделать implicit conversion )

Aleksey
24.12.2017
09:51:02

Eugene
24.12.2017
11:39:24