[RU] Scala Chat. README: https://github.com/scala-russian/about/blob/master/README.md
использование проекций из абстрактных типов ансаунд
Читать полностью…Думаю, в большинстве случаев женерики лучше применять с точки зрения эргономики
Читать полностью…Поэтому они более или менее взаимозаменяемы. Но это только с точки зрения правил применения
Читать полностью…альтернативно можно написатьdef ff1(f: A{type T >: String}) = f.set("hello")
не компилируется, потому что передача строки в роли T должна требовать String <:< f.T, а не наоборот
def ff(f: A)(using String <:< f.T) = f.set("hello")Читать полностью…
What is the problem of this code that gives this error?
Читать полностью…def singup(): Action[JsValue] = Action(parse.json) { request =>
request.body.validate[CreateUser].fold(error => BadRequest(JsError.toJson(error)), { auth =>
val code: String = Random.between(100000, 1000000).toString
database.UserRepositories.getByusername(auth.username).flatMap {
case None => database.UserRepositories.getBynumber(auth.number).flatMap {
case None => smsService.sendsms(auth.number,code) match {
case true => Ok(Json.toJson(Map("token" -> authService.encodeTokensingup(CreateUserToken(auth.number,auth.username,auth.email,auth.password,auth.name,auth.lname,code)))))
case false => BadRequest("error send sms")
}
case Some(existing) => Ok(Json.obj("message" -> ("number is singup")))
}.recover { case _ => ServiceUnavailable }
case Some(existing) => Ok(Json.obj("message" -> ("username in singup")))
}.recover { case _ => ServiceUnavailable }
})
}
Может кто подсказать видеоматериал по tapir + http4s(можно что-то другое)?
Язык не важен, желательно русский/английский
Извиняюсь за вопрос не в тему, кто английский учит, посоветуйте приложение где есть отмотка назад на 5-10 секунд. Спасибо
Читать полностью…а не смущает, что транзакция бд лочится сетевым соединением?
Читать полностью…да у меня прям просто добавление записи было - я их idшки сохранял - а потом просто удалял в случае ошибки
Читать полностью…то есть, если там был insert, то делать потом delete?
Читать полностью…Есть ли способ по типу A получить тип T? A#T не работает, тянуть экземпляр a: A .... a.T не хочется.
Читать полностью…В реальности компилятор, в частности вывод типов и поиск имплиситов работают с ними по-разному во многих случаях
Читать полностью…Ковариантные кодируются как верхняя граница, контравариантные - как нижняя
Читать полностью…Я пытаюь понять отличие A[T] от A {type T} и что где лучше использовать. Получается, в дотти они идентичны за вычетом синтаксиса?
Читать полностью…Может автор хочет чтоб T было гарантированно строкой или литералом
Читать полностью…trait A {
type T
def set(v: T) = ()
}
def ff(f: A)(using f.T <:< String) = f.set("hello")
found : play.api.mvc.Result
[error] required: scala.concurrent.Future[?]
[error] case true => Ok(Json.toJson(Map("token" -> authService.encodeTokensingup(CreateUserToken(auth.number,auth.user
name,auth.email,auth.password,auth.name,auth.lname,code)))))
У меня с конкурентными изменениями. Лочить все равно так или иначе запись придется, хоть в редис, хоть в бд. Это происходит в отдельном воркере, который если что перезапускается. А если второй воркер, то чтобы их синхронизировать и обеспечить последовательность обработки это сильно приседать нужно. Пока 1 инстанс сделал. Тоже лочусь на отправку мессаджа. Тоже читать во время лока можно.
Читать полностью…Да в общем нет, в данном случае у нас нет конкурентных изменений одной и той же записи, только читать могут.
Читать полностью…в Вашем случае может быть сложнее - тогда да - придется ухищряться
Читать полностью…у меня было простое добавление записи - поэтому было легко написать обратный запрос
Читать полностью…