@scala_ru

Страница 946 из 1499
folex
20.09.2017
10:38:52
если в их собственных сеттингах не оверрайдятся
отлично, значит всё правильно понял. спасибо!

Pavel
20.09.2017
11:18:52
есть ли для GetResult в plain sql slick какие-то свистелки помогающие убрать боилерплейт?

Arthur
20.09.2017
11:40:44
у кого-то когда-то была задача вставить елемент в определенное место в списке?

в скала коллекциях вообще есть такие методы?

Google
Arthur
20.09.2017
11:41:08
или надо мутиться через .split

нашел вариант лучше TreeMap, проблема была в том что нужно было поддерживать мапу отсортированной в определенном порядке на основе ключа

а TreeMap по дефолту отсортирована по ключу

Diemust
20.09.2017
11:46:54
Arthur
20.09.2017
11:47:05
мутабл лист, такое себе)

private var state = new TreeMap[String, ActorRef]()(implicitly[Ordering[String]].reverse) забавный велосипед вышел

Oleg
20.09.2017
11:57:39
ПОчти такое же хотел предложить https://scastie.scala-lang.org/Odomontois/hpPGxPmtSLuDLYVqozLgiw

Arthur
20.09.2017
11:59:19
я плохо понял зачем тегать последнюю цифру в числе

KrivdaTheTriewe
20.09.2017
12:00:23
kak je gorit ot scala 2.10.6

Arthur
20.09.2017
12:01:51
фетиш на постарше?)

KrivdaTheTriewe
20.09.2017
12:02:14
spark 1.3 под 2.10

Grigory
20.09.2017
12:02:27
кривда любитель милфоспарка

Arthur
20.09.2017
12:02:34
поэтому я не занимаюсь бигдатой

Google
KrivdaTheTriewe
20.09.2017
12:03:00
ну контейнеры спасли бы меня, но не спасут)

вынес в другой модуль и всё заработало

а не, оно просто позже стало падать) ленивая иницилизация наше всё

Grigory
20.09.2017
12:07:53
а чо у тя там падает

Kirill
20.09.2017
12:34:41
Кто-нибудь gradle пользуется? В последней версии scala-плагина (2017.2.7) для идеи, перестало работать добавление compiler plugin-а и нескольких параметров для него через scalaCompileOptions.additionalParameters, bad option пишет

folex
20.09.2017
13:04:04
Переписал я значит всё с Scala на build.sbt, по документации и гайдами, вот это всё. Переписал, и пытаюсь загрузить в сбт, а там NullPointerException. https://gist.github.com/folex/41bdd9dc1312e767cb239816adb98d5f what do I do now? :(

как это отлаживать?

Nick
20.09.2017
13:07:24
дописать в JAVA_OPTS дебаг

Oleg
20.09.2017
13:09:46
а какой sbt?

аааа во, у тебя прожекты ведь лейзи валами?

lazy val core = project ...

Mikhail
20.09.2017
13:22:08
я плохо понял зачем тегать последнюю цифру в числе
последняя цифра - это название тега, а не то, что он тегает) тегает он ключ, чтобы тримап с ключем ластдигит был, а не просто инт и свой имплисит ордеринг подтянул к ластдигиту относящийся, а не к инту, при этом поскольку это тег - он не прячет основание и все операции которые с интом можно делать, можно и с тегированным делать x % 10 . рисуется вобщем, чтобы пример не скуфный был)

folex
20.09.2017
13:25:53
lazy val core = project ...
ага, точно! Щас попробую. Мне сбт прост как-то запретил делать lazy val project = { import ... project.in(...) } , и я чот решил что это от lazy, удалил, и забыл

да, это оно. Спасибо!

Arthur
20.09.2017
13:46:12
а кто знает, если я создам два персистенс актора с одинаковым id, акка поймет это и убьет один из них?

в пределах одной актор систем

Nikita
20.09.2017
13:46:52
c persistence id?

думаю нет. скорее всего они просто начнут портить журнал

folex
20.09.2017
13:55:04
В build.sbt есть какие-то новые правила по поводу ivyScala := ivyScala.value map { _.copy(overrideScalaVersion = true) }, ? Я добавил это в inThisBuild, и у меня выдает что в одном из подпроектов: [error] Reference to undefined setting: [error] [error] {.}/*:ivyScala from {.}/*:ivyScala (/Development/server/project/Settings.scala:55) [error] Did you mean submoduleNameHere/*:ivyScala ? [error]

если закомментировать это — проходит. Где-то синтаксическая ошибка? или не везде есть ivyScala ключ? Вроде в sbt.Keys лежит

Google
folex
20.09.2017
14:17:00
А у меня 0.13.16

на 1.х не вышло перейти из-за плагинов :(

sbt-play, sbt-scrooge

может через пару месяцев получится

Daniel
20.09.2017
14:26:56
0.13.16 переходная версия, подозреваю там какие-то моменты уже могут быть как в 1.х

folex
20.09.2017
14:47:52
До этого работало, после миграции на .sbt сломалось. Может быть и правда что-то такое.

Vladimir
20.09.2017
15:48:01
Кто-то пили сериализацию дженериков для акка кластера? Пока вышло с kryo idstrategy="default", но я бы хотел налепить на протобафе что-то case class Envelope[T](value: T) учитывая, что я знаю, как T преобразовать в bytearray

...как начнешь скалу с аккой склеивать, так таким дерьмом тянуть начинает

Nikita
20.09.2017
15:55:55
можешь просто сделать трейт-маркер для всего сериализуемого

и в сериализаторе матчить этот трейт

Vladimir
20.09.2017
16:00:41
и в сериализаторе матчить этот трейт
я хочу волшебства: сделать использовать для сериализации самого Т некий тайпкласс, а сериализатор Envelope бы каким-то образом брал уже сериализованный Т и упаковывал себя вместе с ним т.ч. в конфиге я бы определил только сериализатор для Envelope, а остальное на уровне типов

мой внутренний ДеГоз бунтует против того, чтобы каждое новое сообщение в конфиг добавлять

Nikita
20.09.2017
16:01:30
волшебства не бывает к сожалению

Vladimir
20.09.2017
16:02:44
т.е. под капотом все равно крио)))

Oleg
20.09.2017
16:20:27
я хочу волшебства: сделать использовать для сериализации самого Т некий тайпкласс, а сериализатор Envelope бы каким-то образом брал уже сериализованный Т и упаковывал себя вместе с ним т.ч. в конфиге я бы определил только сериализатор для Envelope, а остальное на уровне типов
ну всё просто, имплементишь http://doc.akka.io/api/akka/current/akka/serialization/Serializer.html объявляешь свой тайпкласс как implicit val, засовываешь в него всяческие тайптеги, добавляешь какую-нибудь хрень типа процесса инициализации с регистрацией в гигантской мапе по тайптегу оригинального сериалайзер и тех, от которых он зависит, собираешь все инициализации при старте приложения, получаешь кучу багов, тормозов, те же проблемы, что с крио, но без крио

Vladimir
20.09.2017
16:22:15
что-нибудь при этом еще можно сделать на макросах и все равно будет грустно(

Oleg
20.09.2017
16:24:01
думаю, мечтать о тайпклассах можно перестать уже когда видишь def toBinary(o: AnyRef): Array[Byte] и начинаешь сочинять как искать свой тайпкласс в AnyRef

Google
Oleg
20.09.2017
16:24:50
но полагаю с тайптегами и поиском val в рефлекшоне, соответствующему сохранённому инстансу можно навернуть что-то

через раз работающее

ну или просто замутить trait MySerializable[ T <: MySerializable] { implicit def serialize: Serialize[T] }а в своих кейз классах case class Envelope[T](val x: T)(implicit val serialize: Serialize[Envelope[T]]) extends MySerializable[Envelope[T]]

folex
20.09.2017
16:29:00
конфиг генерить можно же наверняка?

Oleg
20.09.2017
16:29:57
конфиг генерить можно же наверняка?
думаю, в лучшем случае плагинами sbt без явного перечисления типов где-то

Oli
20.09.2017
16:55:14
Привет всем, вот захотелось мне ленивую генерилку всего и вся сделать. Помимо прочего нагуглилось вот это https://stackoverflow.com/questions/3797699/generator-block-to-iterator-stream-conversion В общем, топовый ответ оттуда: scala> def data(f : Int => Unit) = for(i <- 1 to 10) { | println("Generating " + i) | f(i) | } data: (f: (Int) => Unit)Unit scala> def toTraversable[T]( func : (T => Unit) => Unit) = new Traversable[T] { | def foreach[X]( f : T => X) = func(f(_) : Unit) | } toTraversable: [T](func: ((T) => Unit) => Unit)java.lang.Object with Traversable[T] Использование: scala> toTraversable(data).view.take(3).sum Generating 1 Generating 2 Generating 3 Generating 4 res1: Int = 6 Если в дебагере смотреть, Traversable генерируется до конца (так полагаю watcher'ы высчитываются и побуждают эту генерацию), но потом все таки выполняется take(3), но не как я бы ожидала. Там магия какая-то: внутри data, после выполнения f(i) мы перескакиваем обратно на foreach в traversable, а как бы цикл for(i <- 1 to 10), который внутри data, игнорируем. Я увидела breaks в traversable trait'е, но не осилила где они используются и как это работает. Anyone knows?

Nikita
20.09.2017
16:59:53
есть отличная статься на тему ленивости и стримов http://derekwyatt.org/2011/07/29/understanding-scala-streams-through-fibonacci/

Oli
20.09.2017
17:02:30
есть отличная статься на тему ленивости и стримов http://derekwyatt.org/2011/07/29/understanding-scala-streams-through-fibonacci/
Мне она тоже понравилась, но она не объясняет предыдущий пример. Или я упустила что-то? :(

В итоге, я в проде и пишу first #:: blahblah, просто любопытно как TraversableView это делает.

Oleg
20.09.2017
17:12:27
В итоге, я в проде и пишу first #:: blahblah, просто любопытно как TraversableView это делает.
насколько я помню магию примесей для своих коллекций, которые работают на одном только foreach, take и head запускают в foreach код, который бросает эксепшн когда айтемов больше не нужно, который выше ловится

Mikhail
20.09.2017
17:13:02
f - которая в дату пихается его и бросает

Привет всем, вот захотелось мне ленивую генерилку всего и вся сделать. Помимо прочего нагуглилось вот это https://stackoverflow.com/questions/3797699/generator-block-to-iterator-stream-conversion В общем, топовый ответ оттуда: scala> def data(f : Int => Unit) = for(i <- 1 to 10) { | println("Generating " + i) | f(i) | } data: (f: (Int) => Unit)Unit scala> def toTraversable[T]( func : (T => Unit) => Unit) = new Traversable[T] { | def foreach[X]( f : T => X) = func(f(_) : Unit) | } toTraversable: [T](func: ((T) => Unit) => Unit)java.lang.Object with Traversable[T] Использование: scala> toTraversable(data).view.take(3).sum Generating 1 Generating 2 Generating 3 Generating 4 res1: Int = 6 Если в дебагере смотреть, Traversable генерируется до конца (так полагаю watcher'ы высчитываются и побуждают эту генерацию), но потом все таки выполняется take(3), но не как я бы ожидала. Там магия какая-то: внутри data, после выполнения f(i) мы перескакиваем обратно на foreach в traversable, а как бы цикл for(i <- 1 to 10), который внутри data, игнорируем. Я увидела breaks в traversable trait'е, но не осилила где они используются и как это работает. Anyone knows?
def invoke { try{ def f = (i:Int) => { if (enough) throw hitriiexception } data(f) }catch { case x:hitriiexception => } } типа того. брейк, ретурн - также через эксепшены работают - сахарок

Oleksandr
20.09.2017
17:24:34
без стектрейса эксепшн, замечу, так что перформанс падает меньше

Oli
20.09.2017
17:31:32
Лол, думала я в data f(i) обернуть в try catch) но решила, что это уже извращенство)

Oleg
20.09.2017
17:36:11
ленивые генерилки лучше на https://github.com/functional-streams-for-scala/fs2/blob/series/0.10/docs/guide.md#building-streams делать

Alexander
20.09.2017
17:39:34
Мне fs2 очень понравился. Правда я других и не пробовал стримов.

Aleksei
20.09.2017
17:39:50
я не пользовался, но одобряю

Google
Oleg
20.09.2017
17:40:48
Сам пользовал? Any pitfalls?
пользовал, питфоллы: коллеги будут высмеивать за то что юзаешь (давно уже не) scalaz-streams, а также, что это серьёзная тулза для реактивных стримов а не просто локально тяп-ляп

Nick
20.09.2017
17:40:58
А кто что использует у нас для тресинга и метрик?

Oleg
20.09.2017
17:44:20
А кто что использует у нас для тресинга и метрик?
один мой друг в одном банке использовал https://www.instana.com, но она не работала и пилот зафризили

Aleksei
20.09.2017
17:45:20
я так подозреваю или открытие или бинбанк =)

Nikita
20.09.2017
17:48:54
А кто что использует у нас для тресинга и метрик?
Был опыт с appdynamics, не советую. Kamon чуть лучше, но всеравно ужасен

Nick
20.09.2017
17:49:32
А чем ужасен?

folex
20.09.2017
17:52:16
мы юзаем kamon, но тольку ту часть, где он через aspectjweaver вклинивается в переходы между потоками. таким образом прокидываем контекст между фьючами и акторами.

Nikita
20.09.2017
17:52:22
Ну руками народа все прописывать, стримы мониторить не умеет, Akka http через костыль работает с ним

folex
20.09.2017
17:52:54
если что-то другое в камоне включить, метрики там, то сразу закапывать сервис

тормозит, течет, хрен пойми как работает

Nick
20.09.2017
17:53:10
метрики jmx?

folex
20.09.2017
17:53:13
your mileage may vary

метрики jmx?
ну я говорю про репорт куда-нибудь, но это не суть, основная проблема вроде в том что он в свои коллекторы их собирает перед репортом/отправкой

и там всё прям плохо у нас было

а-ля включаешь репортинг в инфлюкс, и он просто смотрит на холостую actorsystem, которая внутри там где-то у кого-то, и всё равно течет

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