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

Marat
26.06.2018
08:54:25

Georgy
26.06.2018
08:56:20

1337
26.06.2018
09:13:07

Google

Vladimir
26.06.2018
09:15:55

Georgy
26.06.2018
09:18:15
зачем держать две мутабельные структуры?
вон Марат написал про нормальное решение через UserKey
хотя нет, оно не подходит, сорян

Vladimir
26.06.2018
09:21:45

Georgy
26.06.2018
09:24:06

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
))0)

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

Google

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

guga
26.06.2018
09:55:51

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

1337
26.06.2018
09:59:02

Александр
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

Igor
26.06.2018
10:05:44

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

Egor
26.06.2018
10:09:19

Евгений
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:35:15

Александр
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()

1337
26.06.2018
10:45:49

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

Евгений
26.06.2018
10:46:54
спасибо

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

Admin
ERROR: S client not available

Stanislav
26.06.2018
10:48:29

Igorek
26.06.2018
10:52:38

Google

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

Sergey
26.06.2018
10:59:49

Egor
26.06.2018
11:04:07

Oleksandr
26.06.2018
11:05:24
исключения идут параллельно ветке сигнатуры метода, да и часто они анчекд

Vladimir
26.06.2018
11:06:47

Sergey
26.06.2018
11:09:03


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


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


Vladimir
26.06.2018
11:22:16


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


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


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


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

Sergey
26.06.2018
11:34:53

Egor
26.06.2018
11:36:15
Изначально речь вообще шла о кидании исключений в лямбде

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

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

Google

Ivan
26.06.2018
12:05:36
https://gist.github.com/indrih17/806395fe7972e0f8d5cfb53175c58852 подскажите, пожалуйста, какой из вариантов лучше? Просто вроде слышал, что есть разница, но чёт хз как лучше. Или без разницы?
,,,i,,iip,k,p

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

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

Georgy
26.06.2018
12:44:48

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