
Nick
31.03.2017
20:13:28
но эт не отменяет факта, что эт обычный Object

Oleksandr
31.03.2017
20:13:46
тогда почему "val a: Int = Int" не работает?
я-то знал (сейчас вспоминаю) фокус с дописыванием () откуда-то, но вот забыл

Nick
31.03.2017
20:22:00
потому что правильно писать так val a:Int.type = Int ))

Google

Oleksandr
31.03.2017
20:25:07
ну да, но "val a: Unit = Unit" компилится
как и "val a: Unit.type = Unit", но тут по совсем другим причинам

Roman
31.03.2017
20:51:31
А казалось бы обычный вопрос со второй главы книги для новичков

Nick
31.03.2017
21:04:30
ну внутренности компилятора не совсем для новичков)

Aleksey
01.04.2017
04:53:46
http://scala-lang.org/blog/2017/04/01/announcing-skala.html давно пора

Mikhail
01.04.2017
05:13:06
тонкий скала юмор)
в соседних чатах модно каналы переименовывать) pro.cxx -> pro.java и т.д.)
может в котлин переименуемся?

Oleg
01.04.2017
05:46:17
go более насущно
если в котлин переименоваться, никто разницы не поймёт всё равно

Daniel
01.04.2017
05:56:31

Oleg
01.04.2017
06:02:56

Daniel
01.04.2017
06:03:24
вот тут точно никто разницы не поймет

KrivdaTheTriewe
01.04.2017
06:49:34
pro.cats

Google

Kirill
01.04.2017
07:31:01
ребят, вопрос по Circe: возможно ли как-то полуавтоматически вывести кодеки для non-sealed trait?
хотя бы указав все наследующие классы руками
примерно как сделавно в Boopickle https://boopickle.suzaku.io/ClassHierarchies.html
implicit val fruitPickler = compositePickler[Fruit].
addConcreteType[Banana].
addConcreteType[Kiwi].
addConcreteType[Carambola]

Nikolay
01.04.2017
07:57:52
только encoder-ы? или decoder-ы тоже?

Kirill
01.04.2017
07:59:32
да, вместе с decoder'ами

Nikolay
01.04.2017
08:02:40
в случае с encoding-ом самый тупой вариант - паттерн матчинг, когда для каждого наследника уже есть encoder.
implicit val encodeThings: Encoder[Thing] = Encoder.instance {
case aThing: AThing => aThing.asJson
case bThing: BThing => bThing.asJson
...
}
то есть это предполагает что encoder-ы для AThing и BThing уже где-то есть - скажем выведены автоматически/полуавтоматически
в случае с декодерами - есть какое-то поле, с помощью которого можно понять, что именно такое это?

Kirill
01.04.2017
08:05:18
Нет, базовый трейт не содержит полей
Но я мысль понял, нужно уметь кодировать тип наследника в трейте самому, чтобы иметь возможность построить декодер
Судя по документации встроенной поддержки такого кейса нет

Nikolay
01.04.2017
08:09:03
по декодерам - http://stackoverflow.com/questions/42165460/how-to-decode-an-adt-with-circe-without-disambiguating-objects/42165461#42165461 вот может помочь
тут по сути перечисляешь все декодеры в нужном тебе порядке, и он будет пробовать по очереди декодировать

Kirill
01.04.2017
08:12:55
Да, то что нужно, спасибо!

Nikolay
01.04.2017
09:32:33
https://twitter.com/shipilev/status/848098362054365184

Sergey
01.04.2017
10:02:09
DevOps в Слесари сантехники, прочистка труб

Mikhail
01.04.2017
12:11:15
http://www.pvsm.ru/images/2016/09/06/daidjest-interesnyh-sobytii-iz-mira-Java-i-vokrug-nee-8-01-08-2016-31-08-2016-4.jpg

Aleksey
01.04.2017
12:12:45
В 22.30 по мск онлайн-трансляция DevZen подкаста. Там иногда бывает про скалу https://gitter.im/DevZenRu/live

Google

Dmitriy
02.04.2017
07:25:01
Всем привет. Не могу понять что происходит. Есть старый проект на плее 2.10. При запуске без проблем открывается и на localhost и на 127.0.0.1
А новый проект play-scala-seed не открывается на 127.0.0.1
В чем магия?
Только localhost

Daniel
02.04.2017
07:27:10
alias на localhost проверь
в системе

Dmitriy
02.04.2017
07:31:35
Файл hosts проверить?

Daniel
02.04.2017
07:31:45
да

Dmitriy
02.04.2017
07:31:55
Там всё норм
Говорю же. Старый проект нормально открывается и там и там когда запускаю
А новый почему то нет, может дело в настройках play?
Кароч такая штука

Dmitriy
02.04.2017
07:33:26

Daniel
02.04.2017
07:36:12
весь гугл тыкает на mysql
это не ошибка с базы у тебя прилетела?

Dmitriy
02.04.2017
07:37:10
Абсолютно чистый и пустой проект
sbt new playframework/play-scala-seed.g8

Vladimir
02.04.2017
07:40:02
Между делом не https пытаешься открыть?

Dmitriy
02.04.2017
07:40:24
ytn
нет

Daniel
02.04.2017
07:42:43
логи и сорцы ковырять надо
если у тебя локалхост прописан 127.0.0.1, то хост отрезолвится должен нормально (а не IPv6 например)
в этом случае сомневаюсь, что дело именно с интерфейсом где приложение подымается

Google

Dmitriy
02.04.2017
07:43:57

Diemust
02.04.2017
07:44:56
попробуй еще со слешом и без, мож в слеше проблема

Darkhan
02.04.2017
07:45:22
В конфиге возможно
play.filters.hosts {
# Allow requests to example.com, its subdomains, and localhost:9000.
allowed = [".example.com", "localhost:9000", "127.0.0.1"]
}
Если используется фильтр

Roman
02.04.2017
07:47:09
Посмотри 'telnet localhost 9000'

Admin
ERROR: S client not available

Daniel
02.04.2017
07:47:38
ради фана
попробуй сделать запрос руками (Jmeter, fiddler или еще что-то)
и попробовать заголовок host поменять
только два места где сервак может получить исходную строку домена - в самом запросе (но это опционально) и заголовок хост

Darkhan
02.04.2017
07:49:40
Так как ошибка из плэя, то с хостами ковыряться не надо. Запрос он видит, но не пропускает. Проблема на стороне плэя.

Dmitriy
02.04.2017
07:50:24
+
Спасибо. Да, дело было в фильтрах

Daniel
02.04.2017
07:51:38
сомнительная фича =/

Dmitriy
02.04.2017
07:59:28
И я так понимаю эти ошибки в браузере тоже из-за фильтров. Потому что когда их убираешь, то всё норм. Может кто-нибудь объяснить или дать ссылку на объяснение как это понять и что он вообще от меня требует?
А то офишиал доки чет мне сейчас ответа не дали

Denis
02.04.2017
08:07:06
Это типа CORS

Dmitriy
02.04.2017
08:19:02

Google

Dmitriy
02.04.2017
08:19:04
Из того, что я понял. Эта content-security-policy толком не поддерживается в браузерах, так что я думаю можно забить
Учитывая что проектик домашний
А вообще было бы интересно послушать у кого был опыт работы с этим, а то я ваще в этом не шарю

Darkhan
02.04.2017
10:59:53
Это можно исправить тоже через конфиг play.filters.headers.contentSecurityPolicy. Думаю включать его полезно, так как он предотвращает некоторые виды атак в поддерживаемых браузерах. Как настроить поля нормально расписано на https://content-security-policy.com/

Alexander
02.04.2017
15:07:00
скалисты, быстровопрос, какой фрейм юзать для посроения rest api: play, spray или что-то другое?

Denis
02.04.2017
15:08:56

Nikita
02.04.2017
15:09:19
ну спрейто уже депрекейтед

Alexander
02.04.2017
15:09:31

Nikita
02.04.2017
15:09:40
бери плей/akka-http
с плеем будет проще

Denis
02.04.2017
15:10:23

Nikita
02.04.2017
15:10:26
ну а если нужно просто rest-endpoint прикуртить, то акка хорошая
как service2service апи - акка хороша
но как тольно всякий cors и фильтры и прочее прикручивать, то начинается бойлерплейт

Alexey
02.04.2017
15:20:10
роуты нормально переисползуются

Vyatcheslav
02.04.2017
15:23:58
Один из примеров того, как прекрасен Play: https://www.playframework.com/documentation/2.5.x/ScalaActionsComposition (спойлер - на самом деле нет), и такого добра там хватает. Ко всему прочему это огромный фреймворк, который ограничивает тебя в выборе инструментов.
Имхо - Play точно не стоит брать, если пишешь REST API. А если обычный сайтик - то пожалуйста.

Vitaly
02.04.2017
15:26:54