
Mikhail
23.05.2017
10:13:14

folex
23.05.2017
10:16:14
@rudogma кстати, а если у меня в каждом eid выполняется инстанциирование какой-то DTO, как бы мне это один раз делать на каждый элемент коллекции, а не каждый раз на каждый вызов? %) наверное никак?

Daniel
23.05.2017
10:19:06
из простых вариантов или отделить это инстанциирование от остального eid или объединить обращения в один вызов

folex
23.05.2017
10:20:26

Google

Mikhail
23.05.2017
10:23:04

Kate
23.05.2017
10:34:11
Всем привет, мы пишем проект на scala, в команде много разработчков чисто с java бэкграундом, так что народ втягивается по-ходу.
Хотели принять какой-либо scala checkstyle, чтобы ускорить ревью на предмет типичных антипаттернов.
Можете посоветовать какой-либо, который на практике пошел норм?

Daniel
23.05.2017
10:38:30
http://www.lihaoyi.com/post/StrategicScalaStylePrincipleofLeastPower.html
китаец как вариант (сам так и не дочитал)

Mikhail
23.05.2017
10:38:49

Daniel
23.05.2017
10:39:41

Evgeniy
23.05.2017
10:43:21

Sergey
23.05.2017
10:51:59

folex
23.05.2017
10:55:00

Mikhail
23.05.2017
10:57:41

folex
23.05.2017
10:58:42
@rudogma да, понимаю, всё так. Я еще помедитирую на это всё, а потом постараюсь описать подход, и задать по нему вопросы :)

KrivdaTheTriewe
23.05.2017
10:59:13
идея совсем сломалась, есть вохмонжность ее как-нибудь даунгрейдить или переставлять нужно?

Dmitry
23.05.2017
10:59:38
эм?

Google

Dmitry
23.05.2017
10:59:44
джарник старый взять?

Vladimir
23.05.2017
10:59:49
я просто несколько версий одновременно держу
типа stable, dev и т.п.

KrivdaTheTriewe
23.05.2017
11:00:58

Dmitry
23.05.2017
11:01:29
круть, там сейчас какой нетти юзается?

KrivdaTheTriewe
23.05.2017
11:01:49
<netty.version>4.1.11.Final</netty.version>
Хотя, я вру, <netty.version>4.0.47.Final</netty.version> , 4 в общем ( идея пишет 4.0.27)

Dmitry
23.05.2017
11:06:06
остается надеяться что у тебя в проекте тоже 4

KrivdaTheTriewe
23.05.2017
11:10:11

Dmitry
23.05.2017
11:10:23
close enough

Dmitry
23.05.2017
11:10:52
я по этому в свое время ребут не юзал
а классик
потому что спрей тянул другую версию

KrivdaTheTriewe
23.05.2017
11:11:33
E = 1 | netty.spark.version - netty.async.version|.toInt < E , все нормально

Kate
23.05.2017
11:13:01
По стайлам - спасибо за предложения!

Alexander
23.05.2017
11:28:30
Возможно кому-то будут интересны наши zero-dependency tagged types: https://github.com/Treev-io/tagged-types
Зачем это нужно: https://failex.blogspot.com.by/2017/04/the-high-cost-of-anyval-subclasses.html?view=sidebar

Daniel
23.05.2017
11:31:28
любопытно

?Ivan
23.05.2017
11:37:39

Oleg
23.05.2017
11:38:16

Google

Alexander
23.05.2017
11:38:37

Oleg
23.05.2017
11:38:38
Кода там как раз на запись в блоге

Alexander
23.05.2017
11:41:25
у Адама нету удобного базового типа для объявления в одну строку и апи для тэганья контейнерных типов (зато есть не сильно нужный TypeclassTaggingCompat)

Oleg
23.05.2017
11:51:33

Arthur
23.05.2017
11:52:37
прошлый вопрос не зашел, может тут кто подскажет, я достаю скаламетой параметры функции и хочу вычислить хешкод для каждого параметра, пытаюсь сделать это так
val ss = paramss.flatten.map { p =>
val r = q"println(${p.name.syntax}.hashCode())"
println(r)
r
}
но код который генерируется выглядит как println("a".hashCode()) вместо того чтобы поставить параметр, кто может подсказать как сделать так чтобы вместо имени как строка подставлялось имя как параметр

RunOver
23.05.2017
12:02:01
Скала коалу в какао макала, коала под скалой какао лакала. #упоринум

Mikhail
23.05.2017
12:05:26
я знаю конечно, что
String @@ Username
будет работать, но хочется прям красиво без этого)

Alex
23.05.2017
12:07:01
кто нибудь трогал https://github.com/strymonas/staged-streams.scala ?

Mikhail
23.05.2017
12:07:30
хотя
String @@ Username
компилит первую строчку, но фейлит вторую

Oleg
23.05.2017
12:09:07

Alex
23.05.2017
12:09:37
реализация стрим фьюженов от киселева и компании
https://strymonas.github.io/

Oleg
23.05.2017
12:10:55
Он компилит стримы на лету?

Alex
23.05.2017
12:11:07
похоже на то

Oleg
23.05.2017
12:11:43
Типа как раст, только в скале, обрабатывает без промежуточных аллокаций, вызовов?

Alex
23.05.2017
12:12:20
As confirmed experimentally, our library indeed offers
the highest, guaranteed, and portable performance.

Alexander
23.05.2017
12:12:32
хотя
String @@ Username
компилит первую строчку, но фейлит вторую
У тебя там есть неточности, нужно так:
object foo {
object Username extends TaggedType[String]
type Username = Username.Type
def check(user: String @@ Username.Tag): Unit ={
println("user: "+user)
}
val user = "Hutor".@@[Username.Tag]
val user2 = Username("Hutor 2")
check(user) // failed!!! wanted))
check(user2) // compiles ok
}

Alex
23.05.2017
12:12:53
оно поверх https://scala-lms.github.io/

Daniel
23.05.2017
12:13:04

Google

Alex
23.05.2017
12:13:18
ну пишут что заруливает Java8 стримы

Alexander
23.05.2017
12:15:11
@rudogma и так тоже тогда можно
def check(user: Username): Unit ={
println("user: "+user)
}

Mikhail
23.05.2017
12:16:08
@tvaroh в ридми пример с check(user:Username) и Username.Tag было бы неплохо добавить, а то я это первым делом полез искать не разбираясь как оно внутри там)

Alexander
23.05.2017
12:19:27
принято

Arthur
23.05.2017
12:26:54

Mikhail
23.05.2017
12:44:09
@tvaroh если добавить еще альяс, то можно вот так
class TaggingExtensions ... {
...
def @@[U](taggedType: TaggedType[U]): T @@ taggedType.Tag = taggedWith[taggedType.Tag]
}
val user3 = "Hutor 3" @@ Username

Alexander
23.05.2017
12:45:16
любопытно, но справа всё же тэг должен быть

Mikhail
23.05.2017
12:45:28
я же его дальше внутри беру из обьекта

Alexander
23.05.2017
12:46:00
я понимаю, но идея в том, что справа от @@ должет быть тэг, а слева raw value
чтобы это выглядело так же, как тип String @@ SomeTag

Mikhail
23.05.2017
12:46:22
оно работает точно также как @@[U]
только запись красивая

Alexander
23.05.2017
12:47:51
понял тебя, в принципе такое можно добавить да

Mikhail
23.05.2017
12:51:39
чтобы это выглядело так же, как тип String @@ SomeTag
идеологически оно так и получается. в одном случае на уровне типов
String @@ SomeTag
, во втором случае если спустились на уровень экземпляров
rawValue @@ SomeTag(as instance of tag)
- тоже кошерненько)) write once use everywhere

Alexander
23.05.2017
12:52:12
да, отличная идея на самом деле ) скоро будет, спасибо

Kirill
23.05.2017
13:06:33
товарищи, энтерпрайз совсем моск съел. Кладу файл конфигурации в classpath, и typesafe ConfigFactory его радостно ховает, принимая имя файла в метод load(). Но если я кладу файл в папку, то все, капут. Что со слешем, что без слеша. ЧЯДНТ?

Nikolay
23.05.2017
13:09:27
в какую папку?
и как ты загружаешь файл конфигурации?

Google

Nikolay
23.05.2017
13:10:02
и как load() вызываешь?

Kirill
23.05.2017
13:10:57
от подробностей может стать больно. Итак: я собираю war-архив. Все жарки лежат в WEB-INF/lib, экспериментальным путем было установлено, что если туда кинуть конфиг, то ConfigFactory по имени файла его найдет и сховает
но есть я кладу конфиг в WEB-INF/lib/config и делаю ConfigFactory.load(s"/config/$configName"), то магия не работает

Юрий
23.05.2017
13:12:11
начинай без слэша

Kirill
23.05.2017
13:12:22
пробовал, не влияет
опаньки, ConfigFactory.parseResources(configName) сховал все отличненько из папки
вопрос закрыт, спасибо)

Wystan
23.05.2017
13:42:47
А не, у меня другой случай. Можно либо деньги попросить, они есть, либо часть процентами взять.
В комментах там интересная дискуссия. Этот Егор толковый мужик.

Nick
23.05.2017
14:19:23

Andry
23.05.2017
14:55:32
Офф. Какое классное кресло :)
https://youtu.be/nQ7mhC5_Rys

Oleg
23.05.2017
15:24:07
элегантных адептов

Nick
23.05.2017
15:26:00

KrivdaTheTriewe
23.05.2017
15:26:00
Elegant Monads In Cats
https://habrahabr.ru/company/mailru/blog/329258/

Nick
23.05.2017
15:28:41
когда эти олени вымрут

Nikolay
23.05.2017
15:29:30
mailru?

Nick
23.05.2017
15:29:44
кто сравнивает несравнимое)