
.
05.10.2017
15:34:39
Спасибо! Посмотрю
И ещё вопрос, хотя скорее в целом про jvm, может кому-то приходилось работать с cgm форматом, при конвертировании теряется кодировка текста. Т.е. когда я смотрю команды для рендера, то вижу что там стоят не те символы, т.е. вместо кирилицы квадраты. Но учитывая, что это бинарный формат файла, я никак не могу взять в толк, как определить кодировку и прочитать корректно

Alexey
05.10.2017
16:34:04
други, а есть где-то сравнение производительности akka http и других http серверов на скале? например с http4s или c finagle? 10% прироста не интересует, но не хочется выбирать решение, которое медленнее альтернативы в 5 раз.

Daniel
05.10.2017
16:36:43
У финча был линк на непонятный тест всего. С мобилы быстро не найду.

Google

Aleksei
05.10.2017
16:39:15

Daniel
05.10.2017
16:39:56
https://www.techempower.com/benchmarks/#section=data-r12&hw=peak&test=json&l=6bk

Alexey
05.10.2017
16:39:58
спасибо. правда там akka http был до оптимизации вроде

Mikhail
05.10.2017
16:40:38

Alexey
05.10.2017
16:41:07
там поверх я как понимаю прилично всего намазано, что может не хило тормозить

Alexey
05.10.2017
16:50:57

Mikhail
05.10.2017
16:52:02

Alexey
05.10.2017
16:52:53
был там colossus в топе, прикрутил его к реальной приложухе и он оказался медленнее того spray

Mikhail
05.10.2017
16:56:36
был там colossus в топе, прикрутил его к реальной приложухе и он оказался медленнее того spray
колоссус я не смотрел, но если у них свой ио, то там может быть такая же ситуация как с нетти и любым низкоуровневым инструментом без готового конфига и пайплайна. когда нетти с нуля люди пробуют у них он тоже медленнее оказывается, чем та же акка-хттп - но если знаешь как готовить нетти, то картина будет совсем другая и там уже всякие спреи, акки - затюнить никак не сможешь, чтобы близко хотя бы по перформансу приблизиться

Nick
05.10.2017
16:57:35

Mikhail
05.10.2017
16:58:12

Nick
05.10.2017
17:06:21
Нетти из коробки довольно хорошо работает

Алексей
05.10.2017
17:16:14
Если хочется finagle + routing + swagger документацию, то можно посмотреть на fintrospect, пока нравится )

Google

Vadim
05.10.2017
17:26:44
анализируя с дивана, мне кажется akka-http со стримами под капотом должна точно уступить финаглу у которого все этапы процессинга тупо функции

Oleg
05.10.2017
17:28:29

Андрей
05.10.2017
17:29:58
А есть какие-либо разработки синхронизации linux и android на скале?
Например, календаря, файлов, удаление всего и вся по кнопке и тд.

Alexander
05.10.2017
17:44:52
Пытаюсь с помощью Шейплеса такую задачу решить:
есть HList из Symbol'ов, нужно сделать линзу вроде: 'a >> 'b >> ....
Может кто-нибудь подсказать, как это лучше сделать? Есть идея обойти рекурсивно получая lens[A] -> lens[B] -> .., но не очень понимаю как это записать правильно.

Oleg
05.10.2017
17:50:01
линзу вроде: 'a >> 'b >> ....
поподробнее об этом
линзу из чего куда?
по полям кейз-классов или рекордов пройтись?

Alexander
05.10.2017
17:51:52

Oleg
05.10.2017
17:52:26
ето просто, но я телефона. Делайте тайпкласс

Alexander
05.10.2017
17:52:38
Вообще мне нужно было список строк или символов ['a, 'b, 'c] развернуть во что-то вроде a.b.c.

Oleg
05.10.2017
17:55:02
и для HNil у него будет Out = Lens[A, A]

Alexander
05.10.2017
17:55:57
Угу. Спасибо. Сейчас попробую.

Oleg
05.10.2017
17:56:15
хотя даже DepFn1 здесь не надо, у Вас же и так линза
просто
{
type Out
def lens: Lens[ A, Out]
}
и для cons попросите имплиситы
LabelledGeneric.Aux[A, Repr]
record.Selector.Aux[SH, Repr, I]
DeepLens.Aux[ST, I, B]
и это должно стать
DeepLens.Aux[SH::ST, A, B]
а nil без имплиситов просто
DeepLens.Aux[HNil, A, A]
но так-то в шейплезе,если вдруг не знали, есть макролинзы вроде
lens[A].x.y.z

Alexander
05.10.2017
18:08:15

Google

Oleg
05.10.2017
18:11:30
хотя, я тут по дороге подумал, что Selector для линзы не хватит, нужно же и модифицироватт
так что добавьте туда же records.Updater с теми же параметрами

Alexander
05.10.2017
18:13:11

Oleg
05.10.2017
18:13:28
но это тогда не линза, а Getter

Alexander
05.10.2017
18:14:00
Угу, я и позабыл уже, что мне не совсем то линза нужна была.

Oleg
05.10.2017
18:14:39
тогда для красоты верните DepFN1

Алексей
05.10.2017
19:21:50
А какой там сваггер?
Там для описания роутов создается некоторый RouteSpec, в котором описывается что принимает, что отдает и тд, на основе этого рендерится swagger описание. Например вот https://github.com/daviddenton/fintrospect/blob/master/src/main/scala/examples/extended/BookAdd.scala#L26
Есть рендер в 1 и во 2 версии, есть конечно пара моментов с именованием моделей в схемах
+ что понравилось в самом Finagle это service подход, что в итоге удобно компоновать различные слои независимо друг от друга, главное чтобы совпадали интерфейсы.

Alexander
05.10.2017
19:56:53

Oleg
05.10.2017
19:59:36

Алексей
05.10.2017
20:00:41
можно сделать свой рендер, в коробке там swagger1, swagger2, sitemap и еще что-то

Oleg
05.10.2017
20:01:54
Просто в опенапи в кои-то веки появились oneOf. Интересно, умеет ли эта ваша штука копродукты
но топ-левел дизайн мне понравился, надо спереть

Алексей
05.10.2017
20:08:19
еще понравилось tcp raw сокет клиент/сервер делать на finagle-netty4 достаточно просто + сразу из коробки статистика полная, все плюшки finagle (фильтры, балансировка, retry и тд)

Daniel
05.10.2017
20:28:57
Господа, кто знает, есть ли в cats MonadPlus? Всё, что удалось выяснить - MonadCombine выпилили, а до cats-mtl он не доехал

Oleg
05.10.2017
20:41:41

Denis
05.10.2017
20:42:36
Хорошее название )

Daniel
05.10.2017
20:42:37
Добрый) спасибо, проглядел

Oleg
05.10.2017
21:04:31

Google

Oleg
05.10.2017
21:05:52
скасти, как обычно не пашет

Vadim
05.10.2017
21:06:08
@odomontois что за приступ вежливости сегодня?)
как будто твоих родителей в чат вызвали)

Oleg
05.10.2017
21:16:41
Добрый) спасибо, проглядел
а вообще оттуда ещё странным образом не выпилили
https://github.com/typelevel/cats/blob/master/core/src/main/scala/cats/Alternative.scala
но по понятным причинам юзать : Monad : Alternative не выйдет

Daniel
05.10.2017
21:18:33
О, вот это уже интересно
В моём случае как раз достаточно Applicative

Alexander
05.10.2017
21:27:20

Oleg
05.10.2017
21:27:35
ну здорово теперь

Alexander
05.10.2017
21:28:36
Я хотел на value level это как-то провернуть, чтобы внутри функции ещё и символами оперировать.

Oleg
05.10.2017
21:28:36
а надо-то что? всё-таки линзу?

Alexander
05.10.2017
21:29:29

Oleg
05.10.2017
21:30:36
В тайплевельно компиляторе ты можешь напечатать
'a :: 'b :: c :: HNil
https://scastie.scala-lang.org/Odomontois/3ggjUXiBTLOik1rLjiipdA/3

Alexander
05.10.2017
22:03:31

Vadim
06.10.2017
00:21:54

Oleg
06.10.2017
05:33:30

Mikhail
06.10.2017
05:43:18

Google

Alexey
06.10.2017
05:43:59
Akka http ещё к спрею то не подобралась

Mikhail
06.10.2017
05:44:21
на хеллоувордах это может быть и не заметно особо будет, но чем дальше в лес - тем больше разница будет

Aleksei
06.10.2017
05:44:22
вроде ж как официально объявили что подобрались и чутка перебрались?
не?
ну просто на хелло ворлдах кривые руки мастера клавиатуры не так сильно влияют на производительность кода, как когда ты глубоко в жо.., простите, в лесу =)
мы вот сами неттей не знаем
но мне кажется примерно как то так все

Oleg
06.10.2017
06:36:14
ты до stream 2.5 мерял?

Alexey
06.10.2017
07:50:53

Oleg
06.10.2017
07:51:43

Alexey
06.10.2017
07:52:03
окей, будем посмотреть

Oleg
06.10.2017
07:52:26
https://akka.io/blog/news/2017/04/13/akka-2.5.0-released
Faster and more flexible Akka Streams materializer, which matters for short lived streams, such as HTTP requests.

Kirill
06.10.2017
09:31:15
насколько стрёмно создавать marker trait, чтобы различать между собой инстансы тайпкласса для одних и тех же типов? Хочу например, печатать , делаю trait Printable[T] { def print(t: T): Unit = ... }, но там где определяю тайпклассы, хочу чтобы у меня был один инстанс чтобы печатать строку в консоль, и второй - чтобы печатать её в лог файл. Нормально ли для такого сделать какой-то пустой marker trait, типо trait Target и добавить в Printable его?

Alexey
06.10.2017
09:32:37
Ну это получается тегирование

Kirill
06.10.2017
09:33:34
Особенно, нормально ли это, если я делаю api, и хочу Target заэкспоузить конечному пользователю, чтобы он сам делал что-то вроде trait CustomTarget extends Target и сам определял инстансы тайпкласса для своего таргета
насчёт тегирования не подумал

Alexey
06.10.2017
09:34:23
Я не очень понимаю зачем тегировать тайпклассы
Просто затаскиваешь в скоуп нужный тебе и всё

Kirill
06.10.2017
09:35:28
а если у меня в одном и том же списке инстансов есть два инстанса Printable[String], но один печатает в консоль, а второй - в лог, и я хочу их последовательно в коде использовать?