
KW
09.09.2017
18:35:56
Мои сомнения в том, стоит ли юзать уровень SERIALIZABLE, или REPEATABLE READ будет достаточно

Vyacheslav
09.09.2017
18:45:55
Там очень страшно

Daniel
09.09.2017
18:46:58
если вставку в таблицу, по которой идет поиск пользователя, делать последней в транзакции, то фантомных чтений не будет

Google

Oleksandr
09.09.2017
18:47:00
Там очень страшно
а если точнее, то ты изначально знал, что будешь там ~5м и потом свалишь
на редкость мудацкое поведение

Vyacheslav
09.09.2017
18:47:56
Я тебе более того скажу - мой начальник это тоже знает
Так что всё в порядке

KW
09.09.2017
18:54:26
спасибо

Daniel
09.09.2017
18:55:35
но лучше коммент в этом месте оставить ;)
мол program order is important

KW
09.09.2017
19:01:53
@optician_owl можно еще один вопрос в том же духе?

Daniel
09.09.2017
19:03:31
тут почти 2к человек, кто-нить да ответит
просто задай вопрос

KW
09.09.2017
19:09:30
вопрос с того же разряда (надо ли SERIALIZABLE) для процеса бронирования апартаментов, который происходит поэтапно:
1) получение с таблицы 1 и 2 (INNER JOIN) списка апартаментов, которые удовлетворяют параметры юзера;
2) сохранение в таблицу 3 заявки на бронирование (INSERT);
3) изменение статуса апартаментов в таблице 3 (UPDATE)

Daniel
09.09.2017
19:17:36
имхо, может сильно зависеть от других факторов и надо знать специфику уже
самый простой вариант само собой наиболее строгое ограничение (serializable)
я бы начал с него, а дальше уже в зависимости от необходимости выкручивать производительность
например можно использовать оптимистик конкаренси, если число конкурентных записей на одни аппартаменты низкое

Google

Vyacheslav
09.09.2017
19:28:50
Нашёл у чела кусок забавного кода https://prnt.sc/gj5ewr
Лямбды не завезли, видать

Daniel
09.09.2017
19:29:44
хрен с ним с легаси
но приходишь такой на проект, а коллеги тебе код скриншотами кидают

Vyacheslav
09.09.2017
19:30:18
https://github.com/jirkapinkas/java-blog-aggregator-boot/blob/master/src/main/java/cz/jiripinkas/jba/Application.java
Прошёл месяц работы моей практически - я ещё проект даже не собирал
Велкам ту легаси, бичез

KW
09.09.2017
19:34:06

Quantum Harmonizer
09.09.2017
19:35:22
Щас в викторине наткнулся на вопрос — мол, Вася и Петя проектируют HTTP-сервис, Вася хочет, чтобы POST /something сразу возвращал обновлённый список объектов, а Петя говорит, что не надо перемешивать запросы с разной семантикой. Помогите Пете обосновать.
Посмотрел с другой стороны. Наоборот, если всегда фронт делает два запроса подряд, как их грамотно объединить, чтоб экономить трафик/ЦП/время/код?

headshrinker
09.09.2017
20:31:45

Quantum Harmonizer
09.09.2017
20:32:07

headshrinker
09.09.2017
20:35:11
не понятен контекст

Vyacheslav
09.09.2017
20:36:53

Arsen
09.09.2017
22:27:13
Arsen Dzh:
Добрый вечер сообщество)
У меня появилось немного времени и я хочу поимлементить задачки с java собеседований. EE, SE без разницы)
У вас есть интересные примеры?

Vyacheslav
09.09.2017
22:34:10

Arsen
09.09.2017
22:34:58
Окей, спасибо

Nikita
10.09.2017
05:40:27

Italy
10.09.2017
05:56:29
t.me/teleglap — каталог самых полезных и интересных каналов в телеграм.

Павел
10.09.2017
06:00:23

Google

Arsen
10.09.2017
07:38:17

Павел
10.09.2017
07:58:34

Daniel
10.09.2017
08:11:55
Нет, адрес шлюза
если верить гуглу, то только дернув сторонние тулзы в операционке
аля https://stackoverflow.com/questions/11930/how-can-i-determine-the-ip-of-my-router-gateway-in-java?noredirect=1&lq=1

Павел
10.09.2017
08:13:58

Daniel
10.09.2017
08:17:00
если как комплексное самообразование то хорошая задача
но на целенаправленную подготовку к собесам не подходит
там же весьма специализированно всё

Nikita
10.09.2017
08:19:04

Alexander
10.09.2017
08:19:29
Щас в викторине наткнулся на вопрос — мол, Вася и Петя проектируют HTTP-сервис, Вася хочет, чтобы POST /something сразу возвращал обновлённый список объектов, а Петя говорит, что не надо перемешивать запросы с разной семантикой. Помогите Пете обосновать.
Посмотрел с другой стороны. Наоборот, если всегда фронт делает два запроса подряд, как их грамотно объединить, чтоб экономить трафик/ЦП/время/код?
Тоже обсуждали у себя в команде. Я склоняюсь к варианту Васи, т.е. возвращать объект обновлённый. Во-первых экономим запрос => повышаем отзывчивость интерфейса. Во-вторых если у нас есть поля, которые генерятся сервером, то мы их получим в ответе. Например тот же id. Да, можно возвращать только id, но в чём смысл себя ограничивать?)

headshrinker
10.09.2017
08:33:39
так там речь шла про список на не объект

Alexander
10.09.2017
08:41:00
Да, сорри, пропустил. Не, тогда я за Петю?
1) зачем тащить весь список, если добавился только один объект?
2) такое возвращение - интерфейсо-зависимо — мы можем быть не на экране списка, и он нам не нужен
3) список может быть под фильтром/сортировкой, мы же не будем параметры передавать при создании объекта

Quantum Harmonizer
10.09.2017
08:43:49
Не, обе ситуации допустимы. Вопрос в том, как сделать смешанную семантику правильно.

Alexander
10.09.2017
08:45:01
Фронт делает два запроса только в случае если после создания объекта мы возвращаемся в список
Короче это может понадобится, но далеко не во всех кейсах

headshrinker
10.09.2017
12:05:40
надо сделать чтобы задержка была минимальной, какая разница как отдавать)

Alexander
10.09.2017
12:45:22
Задержки по сети удваиваются в случае двух запросов.

Wystan
10.09.2017
14:12:56
А кто-нибудь знает, как подружить angular и spring, если cross-domain requests. Ангуляр (или браузер) зачем-то вместо GET посылает OPTIONS. И так как у OPTIONS нет security header, бекенд не выдает результат, а просто отвечает ОК

Vyacheslav
10.09.2017
14:16:19
Гугли как томкате фильтр настроить, к примеру

Admin
ERROR: S client not available

Google

Wystan
10.09.2017
14:17:06
А причем здесь сервер? Если ангуляру очень надо это, пускай делает свои запросы.
Тупой ангуляр

Vyacheslav
10.09.2017
14:17:32
При том
Мало ли откуда у тебя запрос прилетел? Надо повесить токен
Это вполне нормально

Wystan
10.09.2017
14:18:13
Это все должен делать фронте-енд, правильно?
То есть это чисто его заморочка/проблема браузера.

Vyacheslav
10.09.2017
14:19:02
Нет
Это проблема того, что фронт и сервер у тебя 2 отдельных приложения. На двух разных портах. Почитай про кроссдоменные запросы
И делай фильтр

Wystan
10.09.2017
14:21:02
Я почитал и не понял, как эти два запросы связаны вообще. Фильтр у меня если видит OPTIONS возврвщает ок: https://stackoverflow.com/questions/45347718/spring-restful-handling-options-request
но ангуляр просто не делает второй запрос после этого

Vyacheslav
10.09.2017
14:22:31
У тебя фильтр не настроен просто
Option запрос - запрос которой проверяет, что запрос правилен. Если всё ок, то улетает уже нормальный запрос

Wystan
10.09.2017
14:44:03
спасибо за обсуждение. уже 20 минут пытаюсь этот cors filter запустить перед авторизацией
httpSecurity
.cors().and()
.addFilterBefore(authenticationTokenFilterBean(), UsernamePasswordAuthenticationFilter.class);

Aleksander
10.09.2017
14:44:31
У спринга есть аннотация

Oleksandr
10.09.2017
14:44:47
cors().and(). -- так типа модно сейчас?

Aleksander
10.09.2017
14:44:52
Моя девушка недавно ангуляр прикручивала, за 15 минут все сделала

Wystan
10.09.2017
14:46:16
у тебя девушка вундеркинд просто

Aleksander
10.09.2017
14:46:18
Вот у неё стоит аннотация над контроллерами

Wystan
10.09.2017
14:46:27
над каждым контроллером?

Google

Aleksander
10.09.2017
14:46:33
@CrossOrigin(origins = "http://localhost:4200")
Да - для тестов локально
Как раз дефолтных порт для ангуляра
4200
Указываешь в ней список хостов и будет тебе счастье

Vyacheslav
10.09.2017
14:48:30
У спринга есть аннотация
Там не только аннотация есть. Там вроде целый класс в спринг секьюрити за это отвечает, если я правильно помню

Wystan
10.09.2017
14:48:44
ну я вот это присунул: https://stackoverflow.com/questions/40418441/spring-security-cors-filter
все равно мой jwtTokenFilter срабатывает первым и выдает 401