@jvmchat

Страница 2580 из 2890
Georgy
26.06.2018
08:54:25
у тебя и name и userId - всегда уникальные?

Marat
26.06.2018
08:54:25
val map = BiHashMap(String, User) map.inverse[???]
либо сделай UserKey, либо userId сделай в User ключом (т.е. только это поле будет в equals/hashCode)

Google
Vladimir
26.06.2018
09:15:55
можешь кинуть линк как это сделать? я с синхронизацией на Вы
Ну вообще я имел в виду просто поддержание согласованности содержимого мап, чтобы там не были разные данные.

Georgy
26.06.2018
09:18:15
зачем держать две мутабельные структуры?

вон Марат написал про нормальное решение через UserKey

хотя нет, оно не подходит, сорян

Vladimir
26.06.2018
09:21:45
вон Марат написал про нормальное решение через UserKey
А как в этом решении искать по ключу, создавать объект, у которого только одно поле норм, а в остальных мусор?

Marat
26.06.2018
09:24:24
ну да, еще одна мапа нужна будет все-равно

Georgy
26.06.2018
09:25:52
а Guava HashBasedTable почему не рассматриваете?

1337
26.06.2018
09:43:40
она еще не сихнронизирована

Egor
26.06.2018
09:45:33
а Guava HashBasedTable почему не рассматриваете?
Потому что Гуава - для пусси

))0)

guga
26.06.2018
09:49:57
@bsideup слушай, а почему свернули 2d1o отличный же был подкаст

Google
Sergei
26.06.2018
09:54:02
ммм..... хм.... мы его не свернули, оффициально по крайней мере ? Спасибо за хороший отзыв, конечно ? Но из-за высокой загруженности что меня, что @tolkv, пока так и не нашли время на след. выпуски ?

Sergei
26.06.2018
09:58:39
да тем хватает, мягко говоря ? А времени - не очень ?

1337
26.06.2018
09:59:02
Потому что Гуава - для пусси
нормальные пацаны заводят Utils и Collection для каждого проекта и пишут деревья

Александр
26.06.2018
09:59:40
ну и норм :D

зато потом те люди понимают полноценно как это работает ))

Митко Соловец?
26.06.2018
10:03:44
@yegor256 выпустил новую статью, наслаждаемся: https://www.yegor256.com/2018/06/26/are-you-an-architect.amp.html

guga
26.06.2018
10:04:21
Georgy
26.06.2018
10:04:59
Sergei
26.06.2018
10:05:15
ждем, надеемся и помним
? Мы подумаем как реинкарнировать подкаст

Alex
26.06.2018
10:05:45
Ох ну каман

Mr.
26.06.2018
10:05:57
Alex
26.06.2018
10:06:08
I haven't seen a single male SW architect in my life, so what?

Egor
26.06.2018
10:08:15
Alex
26.06.2018
10:08:34
Просто у вас не было SW
Хорошего мужика мне надо, угу

Egor
26.06.2018
10:09:19
Хорошего мужика мне надо, угу
Не ворчите, SW все хотят. Часики-то тикают! А то потом заведете в офисе сорок котов

Евгений
26.06.2018
10:27:32
а насколько хорошая практика кидать экспешн в предикате в фильтре в стримах?

Egor
26.06.2018
10:30:50
Говорят, очень плохая

Евгений
26.06.2018
10:30:54
может есть какой-то способ вернуть result с полем error и заредьюсить стрим потом?

Google
Евгений
26.06.2018
10:31:47
ну типа у меня есть стрим элементов, которые надо провалидировать, потом отфильтровать валидные и снова провалидировать

не тащить же мне кортежи (Value, Error) через весь стрим

Vitalii
26.06.2018
10:34:57
/leave

/leave

Egor
26.06.2018
10:35:00
Минуточку, а зачем вообще эксепшн кидать? Откуда он может появиться?

Александр
26.06.2018
10:36:53
логику стрима переделать на "эни инвалид элемент"

тогда еслит что-то найдет, значит не валитдный )

Диоген
26.06.2018
10:37:03
Ну напиши метод извалид и через два двоеточия его вызывай(

Sergey
26.06.2018
10:41:54
Говорят, очень плохая
Чем аргументируют?

Денис
26.06.2018
10:42:55
ну типа у меня есть стрим элементов, которые надо провалидировать, потом отфильтровать валидные и снова провалидировать
Может посплитить в стриме на валидные/невалидные и обработать отдельно, или порядок важен?

Collectors.partitioningBy()

Egor
26.06.2018
10:46:34
Чем аргументируют?
Исключения при ленивых вычислениях выглядят грязно, да и вообще исключения в лямбдах выглядят грязно

Денис
26.06.2018
10:47:09
Да не за что, пожалуй

Admin
ERROR: S client not available

Igorek
26.06.2018
10:52:38
Google
Igorek
26.06.2018
10:53:02
Парсеры на Validation вообще кайфово писать

Sergey
26.06.2018
10:59:49
Исключения при ленивых вычислениях выглядят грязно, да и вообще исключения в лямбдах выглядят грязно
"грязно" - понятие крайне субъективное. Никто не гарантирует NPE в фильтрах, да и в самых ленивых средах случаются паники. Объективных причин не называют?

Egor
26.06.2018
11:04:07
"грязно" - понятие крайне субъективное. Никто не гарантирует NPE в фильтрах, да и в самых ленивых средах случаются паники. Объективных причин не называют?
Ну и зачем делать больше исключений, чем те, что уже могуть быть? В цепочке обработки стрима все исключения будут либо unchecked, либо их там же отлавливать и придется в лямбде, а кому оно надо? Это уже серьезная угроза для зрения

Oleksandr
26.06.2018
11:05:24
"грязно" - понятие крайне субъективное. Никто не гарантирует NPE в фильтрах, да и в самых ленивых средах случаются паники. Объективных причин не называют?
вполне обьективное чем меньше надо действий, чтобы получить необходимые знания о безопасной работе с кодом, тем менее он "грязный"

исключения идут параллельно ветке сигнатуры метода, да и часто они анчекд

Vladimir
26.06.2018
11:06:47
"грязно" - понятие крайне субъективное. Никто не гарантирует NPE в фильтрах, да и в самых ленивых средах случаются паники. Объективных причин не называют?
NPE и т.п. в фильтре - это свидетельство наличия бага в коде, а не нормальный процесс исполнения, вот и всё

Sergey
26.06.2018
11:09:03
NPE и т.п. в фильтре - это свидетельство наличия бага в коде, а не нормальный процесс исполнения, вот и всё
Так и отлично. То что исключение свидетельствует о баге - спору нет. Но что еще делать в окружении, где могут произойти исключительные ситуации (баги), не отлавливаемые компилятором и не входящими в конфликт с системой типов? Паниковать. И чем в этом плане фильтр хуже или лучше?

Vladimir
26.06.2018
11:14:51
Так и отлично. То что исключение свидетельствует о баге - спору нет. Но что еще делать в окружении, где могут произойти исключительные ситуации (баги), не отлавливаемые компилятором и не входящими в конфликт с системой типов? Паниковать. И чем в этом плане фильтр хуже или лучше?
Я понимаю ситуацию, когда элемент стрима не проходит фильтр, как нормальную. Эта ситуация обрабатывается тем, что этот элемент не попадает в результат. Выкидывание исключений добавляет ещё один возможный результат вызова фильтра. И то, что он есть, совсем не очевидно, т.к. это не отражается на типе результата. Раз уж связываться со стримами, лучше избегать побочных эффектов. Или делать валидацию так, чтобы было понятно, что из метода либо не вернётся ничего, либо вылетит исключение.

Sergey
26.06.2018
11:19:54
Я понимаю ситуацию, когда элемент стрима не проходит фильтр, как нормальную. Эта ситуация обрабатывается тем, что этот элемент не попадает в результат. Выкидывание исключений добавляет ещё один возможный результат вызова фильтра. И то, что он есть, совсем не очевидно, т.к. это не отражается на типе результата. Раз уж связываться со стримами, лучше избегать побочных эффектов. Или делать валидацию так, чтобы было понятно, что из метода либо не вернётся ничего, либо вылетит исключение.
ИМХО говорить что фильтры не должны швырять эксепшены в Джаве - врать себе и окружающим. Если есть в языке паника, значит любой кусок кода может упасть. В джаве это отягчается еще и тем что можно через эксепшены сделать контрол-флоу. Если контрол-флоу избегать, то эксепшен в джаве будет просто средством донести программеру ASAP что он где то накосячил. Но никто никогда ему не даст гарантии что фильтры не кидают эксепшенов. Эдак какой нить товарищ, следуя этому правилу, просто перенесет фильтр в метод - и будет у него эксепшн в методе. Нарушение ли это? А если в качестве предиката используется уже готовый метод? Или мы теперь запретим нечистые предикаты? Даже Хаскель паникует, куда уж ленивей. Поэтому нет - не объективно.

Vladimir
26.06.2018
11:22:16
ИМХО говорить что фильтры не должны швырять эксепшены в Джаве - врать себе и окружающим. Если есть в языке паника, значит любой кусок кода может упасть. В джаве это отягчается еще и тем что можно через эксепшены сделать контрол-флоу. Если контрол-флоу избегать, то эксепшен в джаве будет просто средством донести программеру ASAP что он где то накосячил. Но никто никогда ему не даст гарантии что фильтры не кидают эксепшенов. Эдак какой нить товарищ, следуя этому правилу, просто перенесет фильтр в метод - и будет у него эксепшн в методе. Нарушение ли это? А если в качестве предиката используется уже готовый метод? Или мы теперь запретим нечистые предикаты? Даже Хаскель паникует, куда уж ленивей. Поэтому нет - не объективно.
Про панику я не спорю, упасть может что угодно и где угодно. Но вот как раз делать это частью контрол-флоу не стоит, с этим потом работать грустно.

Sergey
26.06.2018
11:22:46
Объекивно было бы, если скажем стрим оставлял открытыми какие нить дескрипторы, например, при работе с Files.list.

Egor
26.06.2018
11:25:16
ИМХО говорить что фильтры не должны швырять эксепшены в Джаве - врать себе и окружающим. Если есть в языке паника, значит любой кусок кода может упасть. В джаве это отягчается еще и тем что можно через эксепшены сделать контрол-флоу. Если контрол-флоу избегать, то эксепшен в джаве будет просто средством донести программеру ASAP что он где то накосячил. Но никто никогда ему не даст гарантии что фильтры не кидают эксепшенов. Эдак какой нить товарищ, следуя этому правилу, просто перенесет фильтр в метод - и будет у него эксепшн в методе. Нарушение ли это? А если в качестве предиката используется уже готовый метод? Или мы теперь запретим нечистые предикаты? Даже Хаскель паникует, куда уж ленивей. Поэтому нет - не объективно.
Мы сейчас говорим об идеологии стримов и методов обработки данных в принципе. Идеология filter такова, что он может возвращать только "да" и "нет", все, никаких третьих вариантов. Если он падает с NPE - значит, данные изначально неправильные, и их по порядку бы сначала профильтровать ещё и на null-ы. Ничего не берется из пустого места, если предсмотреть логичные ситуации, то паники на пустом месте не будет. Какой смысл был тогда завозить стримы в Джаву? Фильтровали бы дальше через for, и исключения бы ловили

Egor
26.06.2018
11:32:59
А эксепшн и не вернет третьего варианта. Он просто положит программу вместе со стримом, сообщив девелоперу что он накосячил. А дальше уж пусть девелопер думает - данные ли там были неправильные, и/или он фильтр на нул забыл вкорячить
Ну вот вам и третий вариант, вдобавок к первым двум - либо фильтр говорит "да", либо "нет", либо - внезапно - кладет программу, а это вообще сайд-эффект, каких в стримах не предусматривалось. Да и кидать кастомные unchecked эксепшны - моветон, а try-catch в лямбде, как я уже говорил, вредно для здоровья

Egor
26.06.2018
11:36:15
Ну да - кладет. А как иначе то, если бага в программе? Закрыть глаза и дальше работать? Fail fast!
Ну так о том и речь. Есть баг - пофиксите. Если NPE - сначала отфильтруйте. В джаве вообще не так много рантайм-эксепшнов.

Изначально речь вообще шла о кидании исключений в лямбде

Жабра
26.06.2018
11:37:45
https://gist.github.com/indrih17/806395fe7972e0f8d5cfb53175c58852 подскажите, пожалуйста, какой из вариантов лучше? Просто вроде слышал, что есть разница, но чёт хз как лучше. Или без разницы?

Ivan
26.06.2018
12:05:22
,,,,o

Google
Georgy
26.06.2018
12:15:35
@adshflka1 разобрался?

1337
26.06.2018
12:40:26
@implmnt да, добавили явно maven resource plugin в maven verify

1337
26.06.2018
12:45:20
а, с другим тебя спутал, сори

Страница 2580 из 2890