
sherzod
17.01.2018
21:13:03
ну хотя бы в аргументах надо указать

Arsen
17.01.2018
21:13:08

Mikhail
17.01.2018
21:13:13
из-за stream API

sherzod
17.01.2018
21:13:41
шутки шутками а ведь правда

Google

Vyacheslav
17.01.2018
21:15:04
Понимаю, простые писать умею
Но юзать нормально их не умею

sherzod
17.01.2018
21:15:34
темп в ИТ всё таки бешенный, есть же "простые" люди, не сильно замкнутые на этот темп, просто живущие

Oleksandr
17.01.2018
21:16:35

Mikhail
17.01.2018
21:16:58
Каждый может сделать посильный вклад отказавшись от использования новых API и возможностей языка Java. Давайте покажем, что такие корпорации как Oracle не могут бесконечно преследовать свою выгоду игнорируя интересы сообщества.
С любовью, команда Авааз

sherzod
17.01.2018
21:17:04
я помню декана, читал нам лекцию по схемотехнике, сам был прогером, прогал еще на перфокартах. в какой-то момент отстал и выпал из профессии

Oleksandr
17.01.2018
21:17:05
тем не менее, джавовские стримы — отстой

Vyacheslav
17.01.2018
21:17:15
Вполне себе норм. И учитывая что будут релизы через полгода, всё будет ещё лучше становиться

sherzod
17.01.2018
21:18:12
да ладно, чего там уметь-то

Oleksandr
17.01.2018
21:18:24
в те редкие случаи, когда мне приходится писать на джаве, я предпочитаю по-старинке с итераторами и циклами, чем ломать голову

Google

Oleksandr
17.01.2018
21:18:45
прекрасно понимаю тех, кто гонит на стримы бочку

Vyacheslav
17.01.2018
21:18:48
да ладно, чего там уметь-то
Да вот такое я сам не напишу
return Optional
.ofNullable(source)
.map(JSONObject::new)
.map(Field.wall::optJSONObject)
.map(Field.attachments::optJSONArray)
.map(JSONArray::toList)
.map(List::stream)
.orElseGet(Stream::empty)
.map(Map.class::cast)
.map(JSONObject::new)
.map(Field.photo::optJSONObject)
.filter(Objects::nonNull)
.flatMap(o -> PhotoSize.stream().map(p -> p.optString(o)).filter(Objects::nonNull).limit(1));

Oleksandr
17.01.2018
21:19:24
а че тут сложного-то ?

Vyacheslav
17.01.2018
21:19:45
Сек, сейчас покажу
В гите должен где-то быть

Oleksandr
17.01.2018
21:19:55
куски типа .map(Map.class::cast) только :trollface: и вызывают

Vyacheslav
17.01.2018
21:20:22
https://github.com/shnaps/Saver/blob/e43ec8fb7710c87ad8f21c8fd4f62c4dfa0f81da/src/main/java/me/shnaps/ParsingService.java#L107
Было такое, стало что я выше кинул
Читабельнее как по мне. Но такой стрим я не напишу

Mikhail
17.01.2018
21:20:46

Oleksandr
17.01.2018
21:20:47
ох бля

Vyacheslav
17.01.2018
21:20:49
Вот так вот просто

Oleksandr
17.01.2018
21:21:00

sherzod
17.01.2018
21:21:00
апи всё-таки хреновое
простые вещи (типа приведённого) писать легко, сложные в месиво превращаются из-за образующихся глубоких вложений

Vyacheslav
17.01.2018
21:21:28
Могли быть, а могли и не быть

Oleksandr
17.01.2018
21:22:25

Mikhail
17.01.2018
21:22:33

Vyacheslav
17.01.2018
21:22:47
В итоге теперь это https://github.com/shnaps/Saver/blob/7a23f00f5f1a12f2e1588db7a7567e8fe654dbe9/src/main/java/me/shnaps/ParsingService.java#L38 и https://github.com/shnaps/Saver/blob/master/src/main/java/me/shnaps/PhotoSize.java это

Google

Vyacheslav
17.01.2018
21:23:07

Oleksandr
17.01.2018
21:23:14

Mikhail
17.01.2018
21:23:31

Vyacheslav
17.01.2018
21:23:53
Я бы дальше этот стрим покрасивше переписал, но у меня лапки

sherzod
17.01.2018
21:24:33

Mikhail
17.01.2018
21:24:56
чего это?

Oleksandr
17.01.2018
21:25:16
нет компрехеншнов

sherzod
17.01.2018
21:25:16
из-за того что var-а нет еще

Vyacheslav
17.01.2018
21:25:40
Ну почему плохо? По хорошему, я могу прикинуть дезигн, при котором этот стрим на 3 маленьких функции разобьётся

Mikhail
17.01.2018
21:25:42
я не понимать
идея в том чтобы назначать промежуточные результаты с именем и сигнатурой - для понятности. код будет длиннее, но не таким "гениальным"

Mikhail
17.01.2018
21:26:47
тот же принцип в скале. там ты можешь не объявлять тип, но в данном случае лучше объяви для читателя

sherzod
17.01.2018
21:28:14
вообще это надо в закладки бросить))
мапмапмапмапмап

Vyacheslav
17.01.2018
21:29:19
А?

Mikhail
17.01.2018
21:29:41

sherzod
17.01.2018
21:30:18
надо andSoOn добавить

Vyacheslav
17.01.2018
21:33:46
НУ ТАК ПОЛУЧИЛОСЬ
ПРОСТО АПИ ПЛОХОЕ

Google

sherzod
17.01.2018
21:36:22
https://github.com/datamoth/datamoth/blob/master/datamot/src/main/scala/io/github/datamoth/dm/Worker.scala#L102
Щытай что мы квиты

Vyacheslav
17.01.2018
21:37:42
Мортал Комбат ин да хаус

Admin
ERROR: S client not available

sherzod
17.01.2018
21:38:07
Зато я иконку красивую нарисовал

Mikhail
17.01.2018
21:38:57
еще не поздно!

sherzod
17.01.2018
21:40:03
я просто еще не знал про мапмап тогда

Vyacheslav
17.01.2018
21:42:46
В общем, выглядит забавно
Но главное чтоб работало

Oleksandr
17.01.2018
21:46:58
*сохранил, буду пугать детей этим

Vyacheslav
17.01.2018
21:47:46
А потом будешь рассказывать страшные сказки про elegant objects?

Oleksandr
17.01.2018
21:48:06
да его забудут через год
там говорить не о чем
type Ok[+A, +B] = Left[A, B]
type No[+A, +B] = Right[A, B]
бгг

Vyacheslav
17.01.2018
21:48:33
Его забудут, а мемчики останутся

Alexey
17.01.2018
22:20:37
никто случаем не проходил курс
grokking the systems design interview
?

Kyrylo
17.01.2018
23:22:23
Про стримы в жабе - есть такая библиотечка
vavr.io
Не сильвер пуля, но есть интересные пассажи

Kirill
17.01.2018
23:41:54

Baruch
17.01.2018
23:58:27
редкая проницательность!

Google

Vitalii
18.01.2018
05:00:30
ну ок, давайте посчитаем процент коллег с опытом 10+ в индустрии?
Они все в моей компании, видимо, ибо дохрена людей 10+, 12+, 14+. Рядом со мной сидит коллега вообще че-то около 16 лет опыта.
Правда не Энтерпрайз и большинство -- не джава. Может это в этом вашем Энтерпрайза народ такой трепетный? ?
Ниче, живут, работают, так и не скажешь, что динозавры.
В прошлой компании такой был как минимум один, а команда была небольшая.

ds
18.01.2018
05:14:06

Vyacheslav
18.01.2018
05:27:41
Лол, взгляните на Баруха
Вот вам человек, у которого всё норм

Andrey
18.01.2018
05:36:47
А он девелопером работает?

Aleksandr
18.01.2018
05:49:49

Vitalii
18.01.2018
05:55:46

Евгений
18.01.2018
05:58:15
все-таки адвокат

Sergey
18.01.2018
06:07:33
по уголовным делам, когда кто то в очередной раз хоронит груви — Барух будет на месте преступления

Timur
18.01.2018
06:12:13

Andrei
18.01.2018
07:29:11
Ребята, вопрос по best practices в области ORM:
вот есть legacy база данных с совершенно уродским с точки зрения гуёв дизайном.
Есть классические hibernate entities и удобная gui модель с REST.
Как всё это по-хорошему связывается без DTO и мапперов?
Наклепать репозиториев для projections, слать их на фронты, получать потом обратно, lazy - фетчить hibernate entities по айди через EntityManager, сетать все значения из проекции и сохранять?

Artjom
18.01.2018
07:34:23

Andrei
18.01.2018
07:37:23