
Aleksei
10.02.2018
14:01:14
ты же вроде как в одном месте их все роуты собираешь

Alexandr
10.02.2018
14:01:24
Nginx :)

Aleksei
10.02.2018
14:01:24
вот в том месте можно завернуть их в директиву

Igor
10.02.2018
14:02:06

Google

Alexandr
10.02.2018
14:02:42
https://doc.akka.io/docs/akka-http/current/routing-dsl/directives/respond-with-directives/respondWithHeaders.html
У меня есть такое, вроде, всегда срабатывает

Igor
10.02.2018
14:05:22
Да вот что-то не могу понять, либо js стучится не куда нужно, и сервак его резонно посылает, либо на серваке проблема. Щас костылями пожонглирую, пойму
UPD: с respondWithHeaders все в порядке, на фронте затупил (убивает меня этот js...)

Alex
10.02.2018
14:37:41
> В Китае выпустили бюджетный электрокар стоимостью в $5600
интересное у вас представление об информационных технологиях

Daniel
10.02.2018
14:50:18
нубский вопрос (никогда не сталкивался с задачей)
Что есть готового для работы с паролями веб пользователей? Или нужно самому все городить по каким-то best practices?
Oauth пока скиппнем

Wystan
10.02.2018
14:52:08
Про токены (например, jwt) знаешь?

Daniel
10.02.2018
14:52:44
слышал краем уха, спасибо за напоминание
также где то видел мнение, что у технологии какие-то проблемы бай дизайн

Nick
10.02.2018
14:54:10

Alexander
10.02.2018
14:54:30

Wystan
10.02.2018
14:54:54
Про проблемы хз, но обычно пользователь вводит логин/пароль, который сравнивается с сохраненным (закодированном с salt) паролем, если ок, то выдается токен ( обычно на 5 минут) и клиент к каждому запросу прикрепляет токен и иногда просит сервер его обновить.

Google

Nick
10.02.2018
14:55:21
Обычно делают два токена

Daniel
10.02.2018
14:55:26

Wystan
10.02.2018
14:56:05

Nick
10.02.2018
14:56:32

Daniel
10.02.2018
14:56:51

Wystan
10.02.2018
14:57:22
Ну вот это обновление каждые пять минут и есть защита по времени.

Oleg
10.02.2018
14:57:45

Wystan
10.02.2018
14:57:59
Вообще это все поверх https, так что мидл мена тоже нет.

Oleg
10.02.2018
14:58:08
для той защиты нужно просто фунцкию сравнения правильную вызвать, в akka-http есть

Wystan
10.02.2018
14:58:33
Это защита от чего?
Я просто сравниваю время выдачи токена с текущем временем и временем последней смены пароля, на всякий случай.

Oleg
10.02.2018
14:59:12
https://doc.akka.io/docs/akka-http/current/routing-dsl/directives/security-directives/index.html#credentials-and-password-timing-attacks

Wystan
10.02.2018
15:00:31

Oleg
10.02.2018
15:00:48
нет

Daniel
10.02.2018
15:00:51

Oleg
10.02.2018
15:01:05
там рассказывается об атаке, которая замеряет время ответа
чтобы вычислить в среднем, сколько символов заматчилось

Wystan
10.02.2018
15:02:03
Как такая атака может пройти, если у пользователя три попытки на ваедение пароля, остальные будут экспоенциально тормозиться?

Daniel
10.02.2018
15:02:05
Ну я вроде о том же говорю.
атака по времени возможна, когда время шифрования зависит от шифруемого значения, и позволяет подбирать исходные значения
токены - это про сессию

Google

Wystan
10.02.2018
15:02:34
Я, впрочем, после трех блочу аккаунт на 15 минут логин, наверное, не лучшая практика

Daniel
10.02.2018
15:03:03

Oleg
10.02.2018
15:05:10
перебирать постоянно всех юзеров
если есть источник, где светятся их логины

Alexander
10.02.2018
15:06:39

Daniel
10.02.2018
15:06:56
на работе мои сервисы без пользователей и наружу не торчат

Alexander
10.02.2018
15:08:04
А, ок. Из готового я кроме jwt и не помню ничего.

Daniel
10.02.2018
15:08:32
ясно
материал для старта есть, всем спасибо

Alexander
10.02.2018
15:09:44
У нас люди сами поверх Spring Security какого-нибудь писали велосипеды, может им хотелось просто.
Подскажите, пожалуйста: у меня есть поток данных, скажем, Stream[T], я хочу что-то вроде find, который мог бы испольняться параллельно над разными элементами.

Р
10.02.2018
22:53:19

Alexander
10.02.2018
22:59:33

Р
10.02.2018
23:03:07

Alexander
10.02.2018
23:04:14
Т.Е. оно не будет считать все элементы?

Р
10.02.2018
23:06:10
Вам даже collect не нужен. Достаточно filter.
Я думаю в mapAsyncUnordered вы можете возвращать, например, Future[Option[T]]
А потом в collect брать только то что Some

Google

Alexander
10.02.2018
23:10:51
Спасибо, гляну как там это сделано.
А может кто знает как с ExecutorService такое провернуть?

Р
10.02.2018
23:20:32

Александр
10.02.2018
23:29:24
якорЪ

Alexander
11.02.2018
00:35:11

Denis
11.02.2018
09:39:57
https://github.com/scalaz/scalaz/pull/1647

Oleg
11.02.2018
12:05:04
правда, учитывая, что у них нет своего симулякрума, количество бойлерплейта несильно уменьшилось
интересно, заадоптил ли кэтс мтл

Dim
11.02.2018
12:12:20
Как в ReactiveMongo сделать поиск по полю документа в массиве?

Grigory
11.02.2018
12:20:01

Dim
11.02.2018
12:21:34
в доках просто про это нигде не сказано (по reactivemongo)

Grigory
11.02.2018
12:21:55
поэтому в доках по монгореактиву и нету
попробуй еще с монго докой ознакомиться

Nick
11.02.2018
13:19:54

Grigory
11.02.2018
13:31:25
Она, зашкварился )
знать своего врага надо в лицо, что бы не кидаться пустословными аккамонгами

Luger
11.02.2018
13:32:59
Кстати, в реактивмонге какая скалка сейчас используется?

Grigory
11.02.2018
13:33:21
https://mvnrepository.com/artifact/org.reactivemongo/reactivemongo

Google

Luger
11.02.2018
13:34:49
хорошая попытка, но я не знаю
Ок) меня как-то взяло любопытство , попробовать монгу, хотел взять salad или как там - там только 2.11, короче работал я с драйвером официальным , это довольно больно, если не писать какой нибудь дсл поверх

sherzod
11.02.2018
17:31:44
Подскажите, в cats, первым аргументом идёт функтор, а не функция (что дало бы бесплатно lift), для того чтобы не приходилось указывать тип элемента в map?

Oleg
11.02.2018
17:38:17

sherzod
11.02.2018
17:38:40
В map
def map[A, B](fa: F[A])(f: A => B): F[B]

Oleg
11.02.2018
17:39:34
F[A] - это не функтор, хотя в техническом плане, ты прав.
Совсем первым аргументом идёт this, который в данном случае функтор

sherzod
11.02.2018
17:41:03
def map[A, B](f: A => B)(fa: F[A]): F[B]
мне кажется более естественным, но при этом тип А не выводится, я хочу понять прав ли я утверждая это

Oleg
11.02.2018
17:41:41
Если отбросить неудавшуюсь воскресную токсичность, функции удобно передавать последним аргументом в отдельном арг-листе, чтобы писать типа
F.map(fa){ a =>
....
}

sherzod
11.02.2018
17:45:14
понял, т.е. из практических соображений, спасибо

Daniel
12.02.2018
04:26:01
https://news.ycombinator.com/item?id=16353551
@fomkin конкуренты Королева

Aleksey
12.02.2018
06:17:00