
Aleksey
23.01.2017
11:20:23
Или что-нибудь типа a.lift(x).flatMap(ar => val br = b.lift(x); if (ar != br) None else Some(ar))
Блин.

Oleg
23.01.2017
11:21:12

Aleksey
23.01.2017
11:22:07
Да, хорошее решение.

Google

Oleg
23.01.2017
11:35:32

Mikhail
23.01.2017
11:50:39
из скалы выйдет прекрасный perl )

Aleksey
23.01.2017
11:52:29

Mikhail
23.01.2017
11:53:36
"Если нечто выглядит как утка, плавает как утка и крякает как утка, то это, вероятно, утка и есть." ))
Даешь безопасный typelevel perl в массы!

Aleksey
23.01.2017
11:54:13

Andrey
23.01.2017
11:54:38

Diemust
23.01.2017
11:54:40
или мимик

Mikhail
23.01.2017
11:54:44
паттерн матчинг и имплиситы разберутся кто есть кто)

Oleksandr
23.01.2017
11:56:31

Oleg
23.01.2017
11:56:45

Mikhail
23.01.2017
11:57:10

Google

Oleg
23.01.2017
11:57:13

Oleksandr
23.01.2017
11:57:55

Oleg
23.01.2017
11:58:01
можем вернуться к голосовалке про F против FooFunctor

Alex
23.01.2017
12:32:34
typelevel perl это как известно линзы
(а typelevel lisp - фриманатки)

Aleksey
23.01.2017
12:33:13
линзы очень даже легко читаются, если простые

Alex
23.01.2017
12:33:34
хорошее уточнение :)

Aleksey
23.01.2017
12:33:42
мне вот очень нравятся вот эти https://github.com/adamw/quicklens

Oleg
23.01.2017
12:38:19

KrivdaTheTriewe
23.01.2017
12:44:27
Друзья, а что читают хорошие люди про разруливание зависимостей в рантайме?

Aleksey
23.01.2017
12:46:30
А что такое разруливание зависимостей?

Doge
23.01.2017
12:49:07
IoC и DI что ли?

Sergey
23.01.2017
12:49:08

KrivdaTheTriewe
23.01.2017
12:51:34
А что такое разруливание зависимостей?
у меня есть библиотека А, которая использует библиотеку С. Есть спарк, который использует билиботеку С, но другой версии. Спарк должен сожрать жарник с библиотекой А и отработать. Поэтому, когда спарк вызывает код библиотеки А вызывает методы библиотеки С, он падает, так как по факту получает более старую версию библиотеки.
Вот собственно, есть ли книжки про разруливание и класслоадинг в таких ситуациях?

Aleksey
23.01.2017
12:54:00
Во. Я все время говорю что такие ситуации это подавляющая анальная боль. А мне говорят, мол расслабься.

Diemust
23.01.2017
12:55:25
ну как выше писали, либо шадоуить, либо еще мерджить конфликты при assembly
и то, и другое есть как в сбт, так и в мавене

Google

KrivdaTheTriewe
23.01.2017
12:56:04
шейдить да, но тут вопрос уже про книги или статьи, как там жвм всё разруливает
ПРосто, чтобы знать.
ну просото как бы я тоже про то же. Вроде читаешь про фп, слушаешь умных людей, иногда смотришь хаскель разборки и так далее. Компайл тайм, шейплесс, коты. А оно тебе вот такой удар в спину битой и убегает.

Mikhail
23.01.2017
12:56:52

Diemust
23.01.2017
12:57:00
ага

Mikhail
23.01.2017
12:57:24
шейдинг порождает абсолютно новые пакеты с точки зрения jvm, потому что там абсолютно новые пути становятся к пакетам

KrivdaTheTriewe
23.01.2017
12:57:34

Mikhail
23.01.2017
12:57:36
поэтому я тебе и говорил почитай тредик

Diemust
23.01.2017
12:57:43
у меня трабла недавно была, Epoll постоянно терялся в тестах. Вылечилось тем, что я netty-epoll засунул выше библиотеки, которая затирала его..

Mikhail
23.01.2017
12:57:51
там ужже разжевывали

KrivdaTheTriewe
23.01.2017
12:58:45
я разобраться пытаюсь, а не проблему решить

Mikhail
23.01.2017
12:58:58
читать пробовал?

Mikhail
23.01.2017
12:59:02
полезно говорят
когда ты соберешь свою сборку A + C и зашейдишь в ней C, то ты получишь абсолютно новую сборку A + D ( и хоть D будет по сигнатурам идентичен C - это будет в другом пакете и следовательно на уровне jvm совсем другая библиотека, которая никак не будет конфликтовать с библиотекой C которую использует спарк)

KrivdaTheTriewe
23.01.2017
13:00:59
так я как бы уже всё сделал и разрулил проблему, меня теперь интересует литература уже

Mikhail
23.01.2017
13:03:02
почитай про рефакторинг чтоли, наверное это самая близкая литература будет)

Grigory
23.01.2017
13:03:59
если именно про класслоадеры хочешь) то есть даже пдфы; в гугл что-то типа jvm classloader pdf

Mikhail
23.01.2017
13:05:04
только никто не решает эти проблемы через classloader

KrivdaTheTriewe
23.01.2017
13:06:40
я не предлагаю решать это через класслоадеры, я хочу понимать механизм класслоадинга, вопрос про это был, спеку на жвм я читал давно и это было неправда

Mikhail
23.01.2017
13:07:12
механиз простой - что первым(или последним - сути не меняет) нашел, то и загрузил

Google

Sergey
23.01.2017
13:08:08
механизм класслоадинга? Насколько понимаю, сбт, например, берет всю библиотеку только самой свежей версии, остальные выкидывает

Mikhail
23.01.2017
13:08:36
когда ты собираешь либу на плюсах, у тебя адреса в таблицах. когда ты собираешь .class - у тебя строчный литерал

Oleg
23.01.2017
13:10:57
"О проблемах с класслоадерами в JVM" by Another Huy
Глава 1. Как избавиться от проблем, когда две библиотеки тянут в зависимостях бинарно-несовместимые версии третьей библиотеки
Никак.
Конец

Artem
23.01.2017
13:13:46
f

Admin
ERROR: S client not available

Mikhail
23.01.2017
13:13:56
если ты собрал библиотеки под одну мажорную версию jvm - они не могут быть бинарно несовместимые в рамках jvm

Oleg
23.01.2017
13:14:12

Doge
23.01.2017
13:15:02
Может имеется в виду мажорная версия скаловского компилятора?

Oleg
23.01.2017
13:15:26
Они всё равно могут быть бинарно несовместимы
сами по себе, безотносительно компилятора

Mikhail
23.01.2017
13:17:27
сами по себе, безотносительно компилятора
и это тоже не вся правда. потому что они вполне могут быть совместимы на 99.99% а один метод будет иметь несовместимую сигнатурку или вовсе отсутствовать - и все сломается только когда понадобится именно это - и то, если его захочет вызвать код, который ожидает другую сигнатурку

Oleg
23.01.2017
13:17:59

Mikhail
23.01.2017
13:18:00
если брать скалу и ее "бинарную несовместимость" - то она просто встраивает код, который проверяет какой версией скалы было скомпилированы либы

KrivdaTheTriewe
23.01.2017
13:20:53
я всего лишь спросил, что читают про класслоадинг (

Oleg
23.01.2017
13:21:33
давай определение бинарной несовместимости
A бинарно несовместима с B, если существует класс X одновременно в A и B, и байткод, использующий X, такой, что он может использовать версию X из A, но не версию X из B
пример, была версия либы 0.0.1-SNAPSHOT

Dmitriy
23.01.2017
13:23:14
Скалисты не хотят чистать про класлоадинг, они хотят писать библиотеки для json десериализации и вычитывание конфигов HOCON)

Oleg
23.01.2017
13:23:17
в ней был метод void foo(Int)

Google

Mikhail
23.01.2017
13:23:18

Oleg
23.01.2017
13:23:42
потом была версия 10.0.1
в ней депрекейченный метод foo был удалён
зато добавлен bar
есть две либы
одна полагается на версию 0.0.1 первой либы, и в ней используется метод foo
другая- на версию 10.0.1, где используется метод bar
как бы ты не резолвил зависимости, использовать эти две либы одновременно не получится
классическое название - dependency hell

Sergey
23.01.2017
13:26:16
deadly diamond of dependency hell

Mikhail
23.01.2017
13:26:26
я всего лишь спросил, что читают про класслоадинг (
в разрезе твоей изначальной проблемы - "jvm грузит в память первый боди для класса со строковым именем "my.super.ClassName" который сможет найти" - это все, что критично-необходимо знать про класслоадинг. все остальные знания про класслоадинг - совсем из другой оперы

KrivdaTheTriewe
23.01.2017
13:28:01
ну вот мне из другой оперы, я же еще раз
еще пишут
Senior Perl Developer https://moikrug.ru/vacancies/1000031282?f=telegram_b

Mikhail
23.01.2017
13:31:08
как бы ты не резолвил зависимости, использовать эти две либы одновременно не получится
возьмем библиотеку Lib. соберем одну версию, среди которых будет класс Utils с методом test и будем его использовать на равне с другими классами этой библиотеки. Соберем джарник и вырежем из него класс Utils. Соберем новую версию этой библиотеки и заменим там содержимое метода test. Запустим приложение и в итоге легко можем получить ситуацию, при которой все классы будут использоваться из первой сборки, а вот наш класс Utils может быть легко загружен из второй сборки. Таким образом будут использоваться обе версии сборки. 99% из первой сборки и 1% из второй - и они вполне могут выполнять интероп без всяких казусов


Oleg
23.01.2017
13:33:33
сделав то, что ты предложил, ты получишь на 99.99% говно