@scala_ru

Страница 1276 из 1499
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
вот в том месте можно завернуть их в директиву
Да вот чет respondWithDefaultHeaders меня игнорирует на часть запросов, или нужно respondWithHeaders использовать?

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
Про токены (например, jwt) знаешь?
С ними ж сложно становится)

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
Ну вот это обновление каждые пять минут и есть защита по времени.

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

Oleg
10.02.2018
15:00:48
нет

Daniel
10.02.2018
15:00:51
https://doc.akka.io/docs/akka-http/current/routing-dsl/directives/security-directives/index.html#credentials-and-password-timing-attacks
спасибо, похоже на то что надо а есть не прибитое к акке?

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
нубский вопрос (никогда не сталкивался с задачей) Что есть готового для работы с паролями веб пользователей? Или нужно самому все городить по каким-то best practices?
На owasp.org есть много материала по best practices. А вообще лучше с местным безопасник пообщаться, у вас разве не SDLC?

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
Подскажите, пожалуйста: у меня есть поток данных, скажем, Stream[T], я хочу что-то вроде find, который мог бы испольняться параллельно над разными элементами.
Если использовать Akka-Streams, то можно, например, написать stream mapAsyncUnordered (долгая операция) collect (условие) take 1

Р
10.02.2018
23:03:07
collect разве не терминальная операция?
В Akka-Streams нет, если я правильно понял вопрос.

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

Р
10.02.2018
23:06:10
Вам даже collect не нужен. Достаточно filter.

Т.Е. оно не будет считать все элементы?
Нет, не будет. Как только первый найдет, take 1 отменит поток.

Я думаю в mapAsyncUnordered вы можете возвращать, например, Future[Option[T]]

А потом в collect брать только то что Some

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

Р
10.02.2018
23:20:32
Спасибо, гляну как там это сделано. А может кто знает как с ExecutorService такое провернуть?
Можно складывать в java.util.concurent.CompletionService и брать оттуда через take. А когда найдёте элемент, то вызвать shutdown. Я, правда, лет сто напрямую джававские классы не использовал. Не расскажу про подводные камни.

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

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

Oleg
11.02.2018
12:05:04
https://github.com/scalaz/scalaz/pull/1647
нотбедный костыль

правда, учитывая, что у них нет своего симулякрума, количество бойлерплейта несильно уменьшилось

интересно, заадоптил ли кэтс мтл

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

Grigory
11.02.2018
12:20:01
Как в ReactiveMongo сделать поиск по полю документа в массиве?
.find( { 'arrayname.fieldname': { $lte: 20 } } ) например берешь доку и прост обычные монгоквери перекладываешь на апишку, они +- подинаковые ^ инфа сверху актуальна на 4-3 года давности p.s. правильно, что акку и монгу используете

Grigory
11.02.2018
12:21:55
Благодарю, в общем там dot нотация, ясно, сейчас попробуем.
монгозапрос в монгошелле похоже пишется

поэтому в доках по монгореактиву и нету

попробуй еще с монго докой ознакомиться

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, короче работал я с драйвером официальным , это довольно больно, если не писать какой нибудь дсл поверх

https://mvnrepository.com/artifact/org.reactivemongo/reactivemongo
Да, здесь вроде не так уж плохо

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

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 => .... }

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

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
https://news.ycombinator.com/item?id=16353551 @fomkin конкуренты Королева
Нет же. Юдаш это фулстэк-фреймворк вроде gwt. Короле легкий, как перышко и не нагружает cpu на криенте.

Страница 1276 из 1499