@scala_ru

Страница 974 из 1499
.
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
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 был до оптимизации вроде

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

Alexey
05.10.2017
16:50:57
https://www.techempower.com/benchmarks/#section=data-r12&hw=peak&test=json&l=6bk
там тесты не эквивалентные нифига

Mikhail
05.10.2017
16:52:02
там поверх я как понимаю прилично всего намазано, что может не хило тормозить
в финагле они нетти как минимум очень неплохо готовят. не смотрел какие тюнинги там доступны через финагл, но даже бейсик копипаста в 10 строк - работает на порядок быстрее, чем голый нетти настроенный большинством)

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

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

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 со стримами под капотом должна точно уступить финаглу у которого все этапы процессинга тупо функции

Андрей
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
Это какой? Где почитать?
рекурсивный, как вы и сказали типа trait DeepLens[L <: HList, A] extends DepFn1[A]

и для 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

Google
Oleg
05.10.2017
18:11:30
хотя, я тут по дороге подумал, что Selector для линзы не хватит, нужно же и модифицироватт

так что добавьте туда же records.Updater с теми же параметрами

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
Алексей
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
Что-то я не осилил.
https://gist.github.com/Odomontois/31dd5834b6fc1e43d5355e631e62e86e

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
https://gist.github.com/Odomontois/31dd5834b6fc1e43d5355e631e62e86e
В два раза короче моей недоделки, спасибо! К сожалению, оно делает не совсем то, что я хотел.

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
а надо-то что? всё-таки линзу?
Нужно a.b.c напечатать (условно) и select сделать.

Oleg
05.10.2017
21:30:36
В тайплевельно компиляторе ты можешь напечатать 'a :: 'b :: c :: HNil

Нужно a.b.c напечатать (условно) и select сделать.
https://gist.github.com/Odomontois/31dd5834b6fc1e43d5355e631e62e86e

https://scastie.scala-lang.org/Odomontois/3ggjUXiBTLOik1rLjiipdA/3

Alexander
05.10.2017
22:03:31
https://scastie.scala-lang.org/Odomontois/3ggjUXiBTLOik1rLjiipdA/3
Наверное, я не смог правильно объяснить. Я хотел "печатать" символы на консоль. Всё что мне было нужно, это Witness.Aux[K]. Огромное спасибо за решения!

В тайплевельно компиляторе ты можешь напечатать 'a :: 'b :: c :: HNil
Со стороны это смешно выглядит, честно говоря :)

Vadim
06.10.2017
00:21:54
окружи еще одним тегом
Дмйьхмкзксндкая

Oleg
06.10.2017
05:33:30
эм. под финаглом же нетти, а кто-то из популярных хотя бы близко подобрался к нетти?
spray can и akka http server утверждаю, что копировали его архитектуру и подобрались очень близко

Mikhail
06.10.2017
05:43:18
spray can и akka http server утверждаю, что копировали его архитектуру и подобрались очень близко
скорее они подобрались очень близко к потолку иммутаблов и кейсклассов. в пиках на экстремальных нагрузках они будут обходиться явно намного дороже.

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

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

Aleksei
06.10.2017
05:44:22
вроде ж как официально объявили что подобрались и чутка перебрались?

не?

ну просто на хелло ворлдах кривые руки мастера клавиатуры не так сильно влияют на производительность кода, как когда ты глубоко в жо.., простите, в лесу =)

мы вот сами неттей не знаем

но мне кажется примерно как то так все

Alexey
06.10.2017
07:50:53
ты до stream 2.5 мерял?
скорее всего, уже пришло время переходить?

Oleg
06.10.2017
07:51:43
скорее всего, уже пришло время переходить?
ну там было оповещение, что они значительно улучшили поведение материалайзера для коротких стримов, привели в пример akka http

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], но один печатает в консоль, а второй - в лог, и я хочу их последовательно в коде использовать?

Страница 974 из 1499