@scala_ru

Страница 13 из 1499
Denis
09.06.2016
14:13:53
В акке ввели Done

типа Future[Done]

Daniel
09.06.2016
14:14:44
насколько понимаю, как раз чтобы не было каста в юнит?

Denis
09.06.2016
14:14:59
Ну и intention как бы лучше передается )

Google
Daniel
09.06.2016
14:15:07
done просто болванка как и юнит, насколько помню

Vladimir
09.06.2016
14:16:25
Если она компилятором не откидывается, то она уже свое дело делает

Daniel
09.06.2016
14:17:57
я все равно за опцию компилятора 1) не аккой единой 2) накосячить можно случайно и не заметить

Юрий
09.06.2016
15:12:23
Очень странный кейс

Тоже не вижу проблем

Nikita
09.06.2016
15:14:26
это как раз и было мотивацией тайпсейфа для смены Unit на Done

Юрий
09.06.2016
15:21:36
Если говорить о фреймворке типа акки, то да. Но что плохого в использовании Future[Unit] у себя в коде? О каких ошибках идет речь?

Denis
09.06.2016
15:43:34
А кто нибудь юзал gRPC ?

Wystan
09.06.2016
18:04:22
А почему нельзя конкретный тип вернуть? Об чем речь:(

Юрий
10.06.2016
03:49:00
А почему нельзя конкретный тип вернуть? Об чем речь:(
А если конкретный тип не нужен? Например, у вас есть слой доступа к данным. Из вашего слоя бизнес логики вы дергаете метод - удали запись юзера. Внутри слоя доступа к данным вы делаете запрос к бд, ждете ответ, разбираете этот ответ (а там не Future[Unit], там какой-нибудь Future[DbResponse]). И уже результат в бизнес слой возвращаете в виде Future[Unit], потому что бизнес слою интересно только сам факт того, прошло ли удаление удачно, или нет. А если прошло неудачно - то с какой ошибкой. И это как раз случай Future[Unit]. А теперь повторю вопрос - где тут подвох, о котором говорили выше?

Vyatcheslav
10.06.2016
05:51:13
Нужно стараться избегать Unit, потому что любое выражение "проглатывается". К примеру, пишем future.map, внутри что-то делаем. Потом решаем, что просто что-то делать не достаточно, хотим внутри футуру зафигачить, но вдруг нас тут отвлекают и мы забываем map заменить на flatMap, переходим в другое место и фигачим код дальше. Ха-ха. Если б был бы указан конкретный тип, то компилятор бы ругнулся

Luger
10.06.2016
06:16:29
всем привет. Slick+hikariCP+postgresql , делаю кучу запросов подряд, выдает вот такую радость: Pool stats (total=10, active=0, idle=10, waiting=0) но : HikariPool-10 - Cannot acquire connection from data source org.postgresql.util.PSQLException: ����������: ����������������, ������ �������������� ���������� ���������������� естесственно, у постгре не осталось свободных коннектов, из 100 забито 100. очень глупый вопрос, а как в слике корректно очищать ресурсы? потому как если делать db.close то это , как я понял не коннект закрывает а вообще пул останавливает. This shows that after every request the db connection is returned to the pool within db.run(...) and db.close is not required. видимо , я не умею готовить слик %)

Google
Daniel
10.06.2016
06:18:58
обычно это значит, что кто-то напихал фьюч куда не стоит, из-за чего слик не может следить за пулом

Luger
10.06.2016
06:34:17
а куда не стоит? db.run возвращает фьючу, в onComplete я делаю respond ответа на страницу.

Daniel
10.06.2016
06:40:50
честно говоря третий не юзал, может там что-то уже по иному во 2ом никаких стримов не было, по неопытности фьючу засунул в транзакцию, из-за чего слик не мог освобождать ресурсы (фьюча мгновенно возвращается, но коннект еще не свободен в этот момент) ну и у других аналогичный косяк часто видел

Vladimir
10.06.2016
06:59:00
В тестах репозиториев на mysql такое было. Просто стартует много тестов и слик вываливается с такой же ошибкой.

Luger
10.06.2016
08:27:16
ну, вообще, падают те запросы, в которых необходимо выполнить два запроса в одной транзакции. точнее: есть запрос X , написанный на plain sql(специфический очень), есс-но в слике его нельзя использовать как подзапрос, возвращает он DBAction. db.run { val userGroupsQuery = groupsDao.recursiveGroupsForUser(userId) map (_.map(_._1)) val query = userGroupsQuery.flatMap{ groupsId => val access = testDao.searchAccessQuery(userId, testId, groupsId) val testQuery = tests.filter{t => (t.testid in access)|| (t.testid === testId && t.creatorid === userId) }.map(_.testid) tasks.filter(t => t.taskid === taskId && (t.testid in testQuery)).result } query.map(_.headOption) }

вот пара таких запросов и вешают все

Alexandr
10.06.2016
08:55:50
?

Luger
12.06.2016
09:17:35
нашел я свою проблему, извините, что отвлек своей простыней - я нарукожопил при создании пула

Pavel
12.06.2016
10:19:08
Наверное избитый вопрос по play, но я тем более удивлён, что не нашел на него ответ: если у меня есть пул коннекшнов к БД и я хочу работать с ним самостоятельно (не средствми play), как добиться того, чтобы в dev режиме не происходил реконнект после reload? Пробовал inject-ить класс, инициирующий коннекшн, но он пересоздается каждый раз ☹️

Dim
12.06.2016
10:35:54
Что все так на этом Play'e зациклены? Finatra, Scalatra, Collosus, akka-http, finch, Xitrum, полно же...

Daniel
12.06.2016
10:37:01
с плеем тысячу лет не встречался, но насколько помню никак

Pavel
12.06.2016
10:54:51
Что все так на этом Play'e зациклены? Finatra, Scalatra, Collosus, akka-http, finch, Xitrum, полно же...
в них тоже наверняка какая-нибудь подстава галактического размера

Nikita
12.06.2016
10:58:56
после полугода работы с akka-http иногда начинаешь скучать по плею и встроенным в него плюшкам

Dim
12.06.2016
11:01:55
В большинстве перечисленных мною фреймворков только одна подстава - это не fullstack фрэймвоки, собираем свой космический корабль сами.

Ну в Finatra подстава с Футурами, они там твиттеровские и приходится использовать Bijection и специфичные имлициты.

Denis
12.06.2016
11:08:59
https://ru.wikipedia.org/wiki/Футура

Alexandr
12.06.2016
11:39:20
По-моему, Play тут ни при чем. Там для работы с БД используются отдельные библиотеки, которые точно также можно использовать и с другими фреймворками

Pavel
12.06.2016
11:41:19
это да. Просто reload всех классов вызывает реконнект к базе - по определеннй причине мне бы этого не хотелось. Ну и вообще странно, что в мануале по play в первых строках не сказано, как этого избежать. Мне кажется - распространенный случай

Daniel
12.06.2016
11:54:11
При изменении сорцов релоад вызывает пересборку и рестарт. Это одна из плюшек плея. Очевидно, что никакое состояние в памяти не сохранится.

Google
Alexandr
12.06.2016
11:56:14
Т.е., нужно чтобы при рестарте приложения, коннект каким-то магическим образом сохранялся?)

Pavel
12.06.2016
11:56:39
именованные JDBC datasource каким-то образом остаются в памяти - потому что они потом ругаются, что уже существуют datasource с таким именем

вот я и подумал, что раз они как-то переживают рестарт (по сути - переживает рестарта HashMap, которая хранит соответствие имя->datasource), значит каким-то образом можно "сохранить" некий класс при рестарте

тем более - там же не обычный рестарт, там ClassLoader подменяется - в общем, какая-то магия

Luger
12.06.2016
12:15:54
кто-нибудь использует у себя akka-quartz-scheduler?

Dim
13.06.2016
00:57:58
Да, юзаем это поделие.

Luger
13.06.2016
05:14:44
Да, юзаем это поделие.
как-нибудь можно из актора, который принял сообщение от шедулера дропнуть job_у?

Dim
13.06.2016
05:17:18
Можно, доберусь до кода/компа сообщу как, если вы раньше не увидите)

Luger
13.06.2016
05:18:45
Можно, доберусь до кода/компа сообщу как, если вы раньше не увидите)
спасибо, буду признателен, курю доки сейчас просто , пока не нашел

Bulbu
13.06.2016
06:33:02
привет! Кто-то знает как в scalacheck генератор String заставить генерировать только читаемые строки?

postgres недоволен

Wystan
13.06.2016
08:29:34
Gen.alphachar?

Bulbu
13.06.2016
08:57:05
спасибо, нашел уже

Gen.identifier

Aleksey
14.06.2016
09:15:23
Друзья, все еще ищу докладчиков на московскую встречу скалалазов https://data-monsters.timepad.ru/event/339285/ Можно писать прямо в телеграм или на почту aleksey.fomkin@gmail.com

Wystan
15.06.2016
18:04:48
Чо как вам первый день скала дейс?

Const
15.06.2016
19:40:35
Отлично!

А что, уже начался?

Wystan
15.06.2016
19:41:55
Одеркски признал что дот нотация рулит и он со своим x map f был не прав

Самая важная новость.

Google
Aleksey
15.06.2016
19:43:34
То есть теперь items map { item => }

Это не кошерно?

Slava
15.06.2016
19:44:35
Хз, по-моему, очень кошерно. Количество визуального мусора по крайней мере минимально, а это большой плюс для читаемости

Wystan
15.06.2016
19:44:52
Надо будет специально помечать infix если ты хочешь писать с пробелом. да некошерно. Кстати, можно будет писать pairItems map ((x,y) => ..) без {case (x,y) => ...}

Viacheslav
15.06.2016
19:45:04
остается ; добавить в конец строк и можно идти Гослингу сдаваться

Admin
ERROR: S client not available

Denis
15.06.2016
19:45:10
;)

Wystan
15.06.2016
19:45:17
Ну да холиварная темка.

Aleksey
15.06.2016
19:45:29
Брошу все, уйду в хаскель.

Denis
15.06.2016
19:45:43
лучше в идрис

Wystan
15.06.2016
19:45:45
И будешь на шее у мамки сидеть без работы

Slava
15.06.2016
19:45:46
Все мы там будем

Wystan
15.06.2016
19:46:50
Вообще интересное у него выступление было (частично повторяет какое-то январское). по мелочи много чего добавят в язык вместе с дотти.

Aleksey
15.06.2016
19:46:54
И будешь на шее у мамки сидеть без работы
Я устроюсь куда-нибудь техдиректором и перетащу контору на хаскель. Всегда так делаю.

Хаскель - сила, скала - могила.

Wystan
15.06.2016
19:48:25
Кто не в компайл-тайме, тот под нами!

Aleksey
15.06.2016
19:49:17
лучше в идрис
Еще лучше язык Макса Сохатского в продашкен. Там где HoTT и вот это все.

Wystan
15.06.2016
19:50:10
Но я кстати не вижу никаких движух особых и преимуществ в хаскеле. ну так взгляд со стороны. есть вот ликвид хаскель чтобы по вене пускать: https://ucsd-progsys.github.io/liquidhaskell-tutorial/01-intro.html Но для простых смертных чего-то типа акка/спарк/плей, чтобы сразу начать ехать - беда

А здесь вот объяснят, наверное, за стримы, akka typed, cluster sharding, akka persistence и прочие микросервисы. В общем, движение!

Google
Alex
15.06.2016
21:36:10
с распределенкой в хаскеле традиционно беда

это язык для написания компиляторов :)

языку сохацкого до гомотопических типов по моему еще как до луны :)

у них там основная победа в хитром кодировании рекурсии

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

но то конечно дело вкуса

IEvgenii
16.06.2016
06:25:14
Обьясните на примере почему в языке нету гомотопических типов ?

Wystan
16.06.2016
06:56:47
Hott начал активно развиваться в 2006-08, позже чем скала чисто по времени. Ну, а главное - strategic Scala Style: Principle of Least Power - язык не будет комплектоваться такими оверкиллами ботаников как dependet types, higher inductive types и применениями в гомотопии. для математиков это основная фишка - гомотопичность двух путей доказательства, но для практического языка - где это вообще может пригодится? Лучше скажи пример, где hott нужен :)

Denis
16.06.2016
07:15:08
dependent types - оверкилл для ботаников?

Dim
16.06.2016
07:19:47
мне бы тоже настоящих dependent types в Scala...

Grigory
16.06.2016
07:22:47
да они настоящие весьма

просто грязно определяются

Dmitriy
16.06.2016
07:27:20
Внимание, очень нубский вопрос. Как запустить sbt проект демоном? Есть стандартные средства? Или через шел скрипты только делать?

IEvgenii
16.06.2016
07:27:25
это вещи которые люди в реальных проектах не пользуются

я бы сказал что математические теории и все что имеет прямое отношение к математике должно быть запрещено для программирования в "индустрии"

в Go пошли по подобному принципы и потому язык быстро стал популярным

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