@scala_ru

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

Блин.

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

Google
Oleg
23.01.2017
11:35:32
где-то для PartialFunction видел =>?
а ну вот она https://github.com/scalaz/scalaz/blob/series/7.3.x/core/src/main/scala/scalaz/package.scala#L125

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

Aleksey
23.01.2017
11:52:29
из скалы выйдет прекрасный perl )
Не надо путать грязный сахар на уровне синтаксиса и изящные решения на основе типов!

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
а ну вот она https://github.com/scalaz/scalaz/blob/series/7.3.x/core/src/main/scala/scalaz/package.scala#L125
кто-то ещё юзает запутанные символьные методы? каждый раз, когда такое пишут, где-то плачет котенок, не делайте так

Oleg
23.01.2017
11:56:45
это не троллинг, это факты) я же не говорю, что плохо, а что хорошо - просто констатирую факты)
это не троллинг, это унылый вброс, учитывая, что фактов было констатировано : 0

Mikhail
23.01.2017
11:57:10
Google
Oleg
23.01.2017
11:57:13
это ты сейчас как-то уныло попытался парировать
это не парирование, я просто констатирую твой жир

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
А что такое разруливание зависимостей?
Видимо декомпозиция задачи на мелкие и DI

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
шейдить да, но тут вопрос уже про книги или статьи, как там жвм всё разруливает
jvm никак не разруливает. оно грузит в память что по порядку найдет

Diemust
23.01.2017
12:57:00
ага

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

KrivdaTheTriewe
23.01.2017
12:57:34
ну как выше писали, либо шадоуить, либо еще мерджить конфликты при assembly
просто у меня нет понимания, как шейдинг спасёт, так как грузит мою библиотеку не java -jar а spark submit

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

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

Oleg
23.01.2017
13:15:26
Они всё равно могут быть бинарно несовместимы

сами по себе, безотносительно компилятора

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

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
A бинарно несовместима с B, если существует класс X одновременно в A и B, и байткод, использующий X, такой, что он может использовать версию X из A, но не версию X из B
в твоем определении должен обязательно существовать блок, который использует X. до тех пор, пока ты не используешь этот X - ты можешь использовать остальные 99% этой библиотеки и не заметишь подмены, даже если они постоянно будут путаться при загрузке и будет меняться поведение внутри - все будет работать

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% из второй - и они вполне могут выполнять интероп без всяких казусов

Senior Perl Developer https://moikrug.ru/vacancies/1000031282?f=telegram_b
скалистам начали эйчары по перлу писать? я же говорю - "из скалы выйдет прекрасный перл" - они видимо уже путаться начали)

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