
Alexander
16.02.2017
21:17:00
Народ, я вот 100 лет не писал ничего гуишного (посл. раз на плюсах 5 лет назад). А вот сейчас нужно. Что из GUI-фреймворков для scala посоветуете? Приложение типа клиента для мессенджера, но хотелось бы что-то посовременнее изучить))

Nikita
16.02.2017
21:17:51

Alexander
16.02.2017
21:18:40
Хотелось бы кроссплатформенно, конечно..

Nikita
16.02.2017
21:19:27
На мобилки или десктопы?

Google

Alexander
16.02.2017
21:20:55
Сейчас десктоп
На андрюшу позже)

Nikita
16.02.2017
21:22:35
Меня может быть сейчас закидают, но под десктоп я бы не стал использовать скалу. По поводу андроида, имхо, тоже самое, взял бы xamarin на f# или react-native, ибо кросс-платформено

?Ivan
16.02.2017
21:24:07
qt посмотри

Nikita
16.02.2017
21:24:10
Но scalajs с phonegap тоже вариант, наверно, если очень хочется

Alexander
16.02.2017
21:24:11
qt посмотри
А что насчёт Swing и ScalaFX. Это что сходу гугл выдал

?Ivan
16.02.2017
21:25:34
я писал на javaFX, много чего сделано костыльно, нормальных контролов толком нет, в общем после опыта гуя на c# мне не понравилось

Alexander
16.02.2017
21:29:14
понятно. а свинг не смотрел?

Vladislav
16.02.2017
21:30:46

?Ivan
16.02.2017
21:31:09
некоторые св-ва с одинаковым названием у разных контролов в javaFX работают по разному. Со swing не работал

Alexander
16.02.2017
21:31:30

Google

?Ivan
16.02.2017
21:33:50
Честно говоря даж я улыбнулся)
ну тогда напишите чем он плох, с учётом того что просили кроссплатформенно и с мобилками. Я вижу только Scala.js со всеми вытекающими и qt

Alexander
16.02.2017
21:37:23
А scalafx вообще не подгружается чего-то.
а нет, вру. просто в доках ошибка.

.
16.02.2017
22:40:22
Может знает кто, есть какой-то ресурс где можно вбросить код и получить код ревью?

Baruch
16.02.2017
22:44:12

.
16.02.2017
22:45:11
Отлично. У меня есть команда из меня и меня. Ах да, еще я на подхвате. Пожалуй кого-то из этих ребят попрошу провести ревью.

Anton
16.02.2017
22:45:41
lmgify https://www.google.ee/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=automated+code+review

Wystan
16.02.2017
22:46:14

Anton
16.02.2017
22:46:15
хотя, это больше как статические анализаторы всё

.
16.02.2017
22:46:51

Anton
16.02.2017
22:47:06
вот прикольный сервис кажется https://www.codacy.com/

.
16.02.2017
22:47:28
Спасибо, посмотрю.

Baruch
16.02.2017
22:51:04

Wystan
16.02.2017
22:51:35
Эх. Старая школа. У меня тульпа Рил Мейер.

Baruch
16.02.2017
22:52:03
у него правда ноутбук пострадал

.
16.02.2017
22:52:20

Daniel
16.02.2017
22:55:23

Google

.
16.02.2017
22:55:51
Спасибо!

Vyatcheslav
17.02.2017
04:28:29
А что насчёт Swing и ScalaFX. Это что сходу гугл выдал
swing вроде deprecated. Scalafx лично я не советую, у него API мозговыносящий, с обилием дряных операторов (как в scalaz любят). Кроме того, он полностью не покрывает API javafx. Я начал писать приложуху на scalafx, потратил день на это дерьмо, плюнул, написал тоже самое на javafx (на scala) за полчаса и сверху функциональности добавил. Единственный момент - советую сразу писать на 2.12.1, потому что с SAM все становится проще и не надо писать имплиситные обертки для Java-йских классов с 1 методом

Alexander
17.02.2017
04:29:26
Да, я уже примерно так и делаю.

Vyatcheslav
17.02.2017
04:29:32
короче, будь у меня терпение на неделю, чтобы побольше пруфов набрать, я бы сделал тикет в awesome-scala, чтобы это говно оттуда убрали

Alexander
17.02.2017
04:29:43
там 50/50 выходит scalafx/javafx

Vyatcheslav
17.02.2017
04:30:40
ты рискуешь, миксуя :) у scalafx своя иерархия во многих местах

Alexander
17.02.2017
04:33:30
в какой-то мере правильно, но с другой стороны я пока не вижу, как это может помешать.
в моём конкретном случае

Vyatcheslav
17.02.2017
04:34:44

Alexander
17.02.2017
04:35:36
конечно. но ротложуха простенькая совсем (пока?)
*приложуха
спать пора)))

Vyatcheslav
17.02.2017
04:35:57
поле ввода и список сообщений? :D
ну ок, раз простенькое, тогда наверное не будет проблем

Юрий
17.02.2017
04:36:27
Слава, юзай Qt

Alexander
17.02.2017
04:36:28
пока да. ну ещё выбор собеседников, менюшка, регистрация

Vyatcheslav
17.02.2017
04:37:20
Слава, юзай Qt
А че, есть биндинги для Скалы? Оо Я пока прототип пишу, а потом да, планировал C++/QT

Alexander
17.02.2017
04:37:41
но, конечно, подобные момеенты "радуют" несказанно
val listView = new ListView[String](messagesList)
listView.setCellFactory{ _ => {
new javafx.scene.control.ListCell[String] {
override def updateItem(str: String, empty: Boolean): Unit = {
setText(str)
setWrapText(true)
...
ибо скаловский ListCell не даёт оверрайдить updateItem

Vyatcheslav
17.02.2017
04:39:13
Вот! Это первое, с чем я столкнулся. Прям тоже самое, только с таблицами

Google

Alexander
17.02.2017
04:40:20
ну да. пока разбирался начитался много всякого))

Юрий
17.02.2017
04:43:44
возможно, scala-native откроет возможности для создяния scala-Qt
вот тогда заживем :D

Vyatcheslav
17.02.2017
04:45:48
эээх… )

Max
17.02.2017
04:49:15

Alexander
17.02.2017
04:50:04

Vyatcheslav
17.02.2017
04:58:01
ребят, кто с Play работает - можно как-то запустить асинхронную задачу перед стартом самого Play, чтоб Play запустился после того, как она завершится? Пока из вариантов - запускать эту задачу в виде отдельного приложения. Ну или Await делать :D

Admin
ERROR: S client not available

Aleksei
17.02.2017
05:00:47
люблю такое, асинхронная задача в синхронном контексте =)

Vyatcheslav
17.02.2017
05:01:45
ну уотакуот вышло :)

.
17.02.2017
05:04:05
У тебя старт скрипт же есть
Заверни старт приложения в обертку какую-то и ее уже стартуй

Sergey
17.02.2017
05:09:37

Vyatcheslav
17.02.2017
05:10:32
А что ты делаешь в этой задаче?
аггрегирует данные с левой базы и пишет в нашу. Это надо сделать разово перед стартом. Согласен, что странно, но уотакуот :)

.
17.02.2017
05:11:22
А почему не сделать это во время первого подключения к бд?

Sergey
17.02.2017
05:12:47
Я с play не работал, ну просто блокируй интерфейс, и загружай, пользователю покажи прогрессбар

Vyatcheslav
17.02.2017
05:12:56
потому что хотелось бы, чтоб первый запрос не занимал по времени больше 10 секунд :)

Google

.
17.02.2017
05:14:02
Но ведь в таком случае у тебя старт приложения по +10 секунд будет занимать

Vyatcheslav
17.02.2017
05:14:50
да, на старт как-то пофиг, да и все равно костыльно это как-то. Проще тогда уж действительно отдельное приложение запускать перед стартом плеевского

Sergey
17.02.2017
05:15:35

.
17.02.2017
05:15:39
Вообще, как контроллеры реализованы? Как класс или объект

Vyatcheslav
17.02.2017
05:16:07
классы. Ладно ребят, сделаем отдельную приложуху )

.
17.02.2017
05:16:12
Если они не инстанцируются каждому пользователю то можно там вкрутить

Sergey
17.02.2017
05:18:52
Зачем вобще что-то слева загружать. Загружай асинхронно в приложении, без перезапусков?

Vyatcheslav
17.02.2017
05:19:49
это нужно сделать только 1 раз, перед запросами пользователей. Это как инициализация

Sergey
17.02.2017
05:21:13
Каждый раз при рестарте сервера?
Проработайте архитектуру, тут что то странное. Эти внешние процессы не нужны. Обновления из другой бд можно подгружвть и без рестарта приложения

Vyatcheslav
17.02.2017
05:25:41
отличный вопрос :) Да, вообще странно

.
17.02.2017
05:28:29
http://stackoverflow.com/questions/4907603/where-do-i-put-startup-code-in-play-framework
а вот это не релевантно случайно?

Vyatcheslav
17.02.2017
05:36:30
это для первого play :)

.
17.02.2017
05:37:47
Там чуть ниже для второго примеры, ещё чуть ниже для 2.3.2
https://www.playframework.com/documentation/2.5.x/GlobalSettings#Scala
Похоже, что нужный кейс

Vyatcheslav
17.02.2017
05:42:44
точнее так:
@deprecated("Use dependency injection", "2.5.0")
trait GlobalSettings {
Не, Сергей отличный вопрос задал. Оказалось (меня другой разраб спросил про запуск перед play), что нужно каждый раз при перезапуске это делать. А если каждый раз - то почему именно при перезапуске. Наверное, задача была не до конца проработана

Юрий
17.02.2017
05:44:20
Сам плэй можно инициализировать ручками

Sergey
17.02.2017
05:44:21
Да, мало инфы про информацию из баз, что бы дать конкретные архитектурные советы

Юрий
17.02.2017
05:44:24
у него есть entry point

Vyatcheslav
17.02.2017
05:44:54