@jvmchat

Страница 1724 из 2890
Alexander
17.08.2017
07:58:21
Vs?

Vyacheslav
17.08.2017
07:58:29
Вижлу?
Visual Studio

Alexander
17.08.2017
07:58:52
Вот так люди и становятся шарпистами

И в Канаду ты не поедешь

Google
Vyacheslav
17.08.2017
07:59:16
Чойта?

Alexander
17.08.2017
07:59:20
Принимай весло

Евгений
17.08.2017
07:59:24
слоган "делаем шарпистов через вижлу"

Vyacheslav
17.08.2017
07:59:59
Эх

Каждый джавист должен пройти через такое, чтобы понять, что у них всё не так уж и плохо

Alexander
17.08.2017
08:01:20
А вдруг понравится, и ты останешься?

Будешь рассказывать какой сишарп клевый

Как через линк круто работать с базой

Anton
17.08.2017
08:02:18
Каждый джавист должен пройти через такое, чтобы понять, что у них всё не так уж и плохо
в кроваом жаба-тырпразе все оче плохо, у нас несколько человек уже на фронт сбежало, не то что на шарп, на фронт, карл

Vyacheslav
17.08.2017
08:04:57
Я себе 3-4 месяца даю, чтобы вкатиться

А там посмотрим

Sergey
17.08.2017
08:09:27
Alexander
17.08.2017
08:11:53
но ведь есть котлин)
А у него выбора нет. VS уже поставили

Google
Alexander
17.08.2017
08:12:10
Все, пропал джавист

Igor
17.08.2017
08:20:43
А у него выбора нет. VS уже поставили
Да ладно, уже все 30 ГБ уже поставились ??

Wystan
17.08.2017
08:24:50
А кто-нибудь gatling c gitlab интегрировал?

Alexey
17.08.2017
08:24:59
Ну из тех кто реально пишет cncrc
если нет операций вставки в очереди, wait, sleep - тогда точно флаг если есть блокировки, тогда уже без обработки Interrupted не обойтись

Arrow
17.08.2017
09:22:11
Ну не совсем так))
в смысле? именно так же

Евгений
17.08.2017
09:26:00
геттеры и сеттеры нужны для сокрытия данных и возможного расширения функционала при присвоении/чтении значения. вот пользуешься ты полями, а потом захочешь валидировать/изменять значение при установке. и усё ))) по всему проекту будешь лазить и заменять на метод

Arrow
17.08.2017
09:27:54
Так, в общем все вроде получилось, но не совсем. Вот смотрите я сделал такую обертку для всех возвращаемых значений (и из методов контроллеров и из обработчиков ошибок): public class ResultView<T> { public final String status; public final T value; public final List<Object> errors; private ResultView(String status, T value, Stream<Object> errors) { this.status = status; this.value = value; this.errors = errors.collect(Collectors.toList()); } public static <T> ResultView<T> success(T result) { return new ResultView<>("success", result, Stream.empty()); } public static <T> ResultView<T> error(Stream<Object> errors) { return new ResultView<>("error", null, errors); } public static <T> ResultView<T> error(Object error) { return error(Stream.of(error)); } } public class ValidationErrorView { public final String message; public final String field; public ValidationErrorView(String message, String field) { this.message = message; this.field = field; } } И все бы хорошо, но когда я именно возвращаю ошибки валидации вот так: @ExceptionHandler(MethodArgumentNotValidException.class) @ResponseStatus(HttpStatus.BAD_REQUEST) @ResponseBody public ResultView<Object> processValidationError(MethodArgumentNotValidException e) { Stream<ValidationErrorView> errors = e.getBindingResult().getFieldErrors().stream().map(x -> new ValidationErrorView(x.getDefaultMessage(), x.getField())); return error(errors); } То у меня на фронт приходит вот такой json: { "status": "error", "value": null, "errors": [ { "parallel": false } ] } Что это за parallel не подскажете? Очень странно... Для обычных строк и success работает нормально.

геттеры и сеттеры нужны для сокрытия данных и возможного расширения функционала при присвоении/чтении значения. вот пользуешься ты полями, а потом захочешь валидировать/изменять значение при установке. и усё ))) по всему проекту будешь лазить и заменять на метод
А зачем мне вообще внезапно может захотеться пользоваться геттерами/сеттерами? ? Пока что у меня это первый случай и то исключительно из-за тупого спринга который походу не умеет просто присваивать полям значения без сеттеров. Больше нигде я с такой проблемой не сталкивался и врятли столкнусь.

Ivan
17.08.2017
09:35:30
Так, в общем все вроде получилось, но не совсем. Вот смотрите я сделал такую обертку для всех возвращаемых значений (и из методов контроллеров и из обработчиков ошибок): public class ResultView<T> { public final String status; public final T value; public final List<Object> errors; private ResultView(String status, T value, Stream<Object> errors) { this.status = status; this.value = value; this.errors = errors.collect(Collectors.toList()); } public static <T> ResultView<T> success(T result) { return new ResultView<>("success", result, Stream.empty()); } public static <T> ResultView<T> error(Stream<Object> errors) { return new ResultView<>("error", null, errors); } public static <T> ResultView<T> error(Object error) { return error(Stream.of(error)); } } public class ValidationErrorView { public final String message; public final String field; public ValidationErrorView(String message, String field) { this.message = message; this.field = field; } } И все бы хорошо, но когда я именно возвращаю ошибки валидации вот так: @ExceptionHandler(MethodArgumentNotValidException.class) @ResponseStatus(HttpStatus.BAD_REQUEST) @ResponseBody public ResultView<Object> processValidationError(MethodArgumentNotValidException e) { Stream<ValidationErrorView> errors = e.getBindingResult().getFieldErrors().stream().map(x -> new ValidationErrorView(x.getDefaultMessage(), x.getField())); return error(errors); } То у меня на фронт приходит вот такой json: { "status": "error", "value": null, "errors": [ { "parallel": false } ] } Что это за parallel не подскажете? Очень странно... Для обычных строк и success работает нормально.
а зачем ты все в Stream оборачиваешь это фетиш такой

?

Arrow
17.08.2017
09:35:43
люблю их

Ivan
17.08.2017
09:37:09
Mikhail
17.08.2017
09:37:19
Кто-нибудь знает, можно ли настроить проект в idea так, чтобы project sdk менялся автоматически в зависимости от того какой javac.target в родительском поме. У нас сейчас переходный период, приходится периодически прыгать между бранчами с разными версиями джавы.

Arrow
17.08.2017
09:37:40
оказывается в метод error передается (судя по отладчику) не стрим, а что-то другое



странно

Ivan
17.08.2017
09:38:13
ReferencePipeline это и есть Stream

Arrow
17.08.2017
09:38:26
ReferencePipeline это и есть Stream
ну а чего он тогда тупит?

Google
S
17.08.2017
09:38:28
Ivan
17.08.2017
09:38:34
это ты тупишь а не он

сори

Arrow
17.08.2017
09:38:39
тогда хз

Ivan
17.08.2017
09:38:52
ты же юзаешь стримы потому что они рулят но разобраться как они работают наверно забыл

Arrow
17.08.2017
09:38:53
это ты тупишь а не он
я не туплю, все должно работать вроде ?

Ivan
17.08.2017
09:39:18
у стрима есть интерфейс там есть метод isParallel

я юзал linq в c#, стримы это примерно тоже самое
это совершенно разные языки внутри

Arrow
17.08.2017
09:40:27
смысл в том что стрим это просто оболочка для любой итерируемой коллекции которая не тратит лишней памяти

как-то так

плюс у стримов куча удобных методов типа того же map

Ivan
17.08.2017
09:41:15
в Java итерируемая коллекция это коллекция обладающая интерфейсом Iterable

Arrow
17.08.2017
09:41:24
это все ништяки из функционального программирования

я люблю фп))

ладно блин не суть, почему у меня так странно мапится результат? что за parallel? почему там нет полей с сообщениями как у меня во вьюхе определено?

Mikhail
17.08.2017
09:42:49
Так, в общем все вроде получилось, но не совсем. Вот смотрите я сделал такую обертку для всех возвращаемых значений (и из методов контроллеров и из обработчиков ошибок): public class ResultView<T> { public final String status; public final T value; public final List<Object> errors; private ResultView(String status, T value, Stream<Object> errors) { this.status = status; this.value = value; this.errors = errors.collect(Collectors.toList()); } public static <T> ResultView<T> success(T result) { return new ResultView<>("success", result, Stream.empty()); } public static <T> ResultView<T> error(Stream<Object> errors) { return new ResultView<>("error", null, errors); } public static <T> ResultView<T> error(Object error) { return error(Stream.of(error)); } } public class ValidationErrorView { public final String message; public final String field; public ValidationErrorView(String message, String field) { this.message = message; this.field = field; } } И все бы хорошо, но когда я именно возвращаю ошибки валидации вот так: @ExceptionHandler(MethodArgumentNotValidException.class) @ResponseStatus(HttpStatus.BAD_REQUEST) @ResponseBody public ResultView<Object> processValidationError(MethodArgumentNotValidException e) { Stream<ValidationErrorView> errors = e.getBindingResult().getFieldErrors().stream().map(x -> new ValidationErrorView(x.getDefaultMessage(), x.getField())); return error(errors); } То у меня на фронт приходит вот такой json: { "status": "error", "value": null, "errors": [ { "parallel": false } ] } Что это за parallel не подскажете? Очень странно... Для обычных строк и success работает нормально.
В BaseStream от которого Stream наследуется, есть метод isParallel, который говорит последовательный стрим у тебя или нет. Если ты маршаллер никак не тюнил, он наверняка это засунет в результат

Ivan
17.08.2017
09:42:52
потому что ты забыл прочитать книжку по Java/Spring/Jackson

Mikhail
17.08.2017
09:43:27
А вообще, маршаллить что-то кроме обычных бинов, на мой скромный взгляд, очень дурно пахнет

Google
Ivan
17.08.2017
09:43:38
бинов или Iterable

т.е. один объект это T и второй это Iterable<T>

Arrow
17.08.2017
09:44:26
потому что ты забыл прочитать книжку по Java/Spring/Jackson
может ты просто скажешь в чем дело если знаешь?( за всю жизнь я не прочитал ни одной книги по программированию и не планирую, но C# например имхо я знаю в совершенстве, а java уже почти тоже, достаточно лишь постоянно разрабатывать на языке чтобы знать его, а что не понятно есть в гугле (как правило)

Admin
ERROR: S client not available

Del
17.08.2017
09:44:52
кек

Mikhail
17.08.2017
09:44:53
Тебе два раза уже сказали

S
17.08.2017
09:45:40
Такие вопросы лучше задавать в https://t.me/javastart

Arrow
17.08.2017
09:46:03
Тебе два раза уже сказали
нет, я понял что parallel это поле стрима, но почему оно там??? у меня же маппится этот стрим в список моделек this.errors = errors.collect(Collectors.toList());

Pavel
17.08.2017
09:46:18
http://hg.openjdk.java.net/jdk8u/jdk8u/hotspot/file/tip/src/share/vm/oops/arrayKlass.cpp

Ivan
17.08.2017
09:46:19
здесь нужно базу иметь чтобы понимать как внутри все работает

Mikhail
17.08.2017
09:46:39
Ты маршаллишь объект стрим, маршаллеру пофиг что у тебя внутри

Ivan
17.08.2017
09:46:49
понимать кто маршалингом в спринге занимается по дефолту

Mikhail
17.08.2017
09:47:02
Он видит там поле которое воспринимает как поле обычного блина

И суёт его в результат

Либо разбирайся с конфигурацией маршаллера, чтобы он со стримами работал

Либо не выкобенивайся и возвращай iterable

Arrow
17.08.2017
09:48:28
Google
Mikhail
17.08.2017
09:48:52
Пожирнее?

Arrow
17.08.2017
09:49:42
щас не совсем понял...

ты о чем вообще

Mikhail
17.08.2017
09:50:11
Который json из объекта готовит

Там не гномики под капотом

Ivan
17.08.2017
09:50:23
вообще то это магический эльф

Nikitos
17.08.2017
09:50:31
сорь

Arrow
17.08.2017
09:50:42
ааа... хочешь сказать это не в стримах проблема, а в json?

Ivan
17.08.2017
09:51:03
не читал книги по прграммированию но спринг гавно

Sergey
17.08.2017
09:51:03
тебе хотят сказать что джексон не хочет есть стрим

Ivan
17.08.2017
09:51:04
у меня все

следующий вопрос что такое джексон =)

Sergey
17.08.2017
09:51:40
просто возвращай эррейлист

Arrow
17.08.2017
09:51:46
тебе хотят сказать что джексон не хочет есть стрим
если ты не заметил у меня нет в классе поля типа стрим, у меня ошибки хранятся в обычном списке, а из стрима просто маппятся

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