@scala_ru

Страница 23 из 1499
folex
17.07.2016
21:20:46
вообще важно только оно, фактическая степень идеальности не важна

Anatoliy
17.07.2016
21:20:57
конечно хорошо :) опыт растет тоже неплохо) правда иногда в тупики упираешься(

Wystan
17.07.2016
21:21:13
ну смотря какой продакешен, если это какой-то мелкий магазин

Anatoliy
17.07.2016
21:21:26
Просто на работает так не поделаешь) Для своих проектов так тоже делать плохо, но тут ситуация что "хоть что-то"

Google
folex
17.07.2016
21:21:31
anatoliy, попробуй все аргументы jvm вывести, и посмотри, есть ли среди них configurationFile

Anatoliy
17.07.2016
21:21:42
нет) Это учет выставленных товаров внутри игры :)

folex
17.07.2016
21:21:43
вообще всё выглядит так, будто сам logback не загрузился

он при старте точно должен что-то писать хоть куда-то

нашел ли реализацию, какой конфиг подцепил, какие аппендеры из конфига взял

нужно чтобы были logback и log4j/slf4j

и может еще что-нибудь, вечно забываю, но вроде этого должно быть достаточно

ну и логгеры проверь что логбэковские или из slf4j используешь

а не твиттеровский какой-нибудь

Anatoliy
17.07.2016
21:23:54
libraryDependencies ++= Seq( "org.json4s" %% "json4s-native" % "3.3.0", ("org.slf4j" % "slf4j-nop" % "1.6.4").exclude("ch.qos.logback","logback-classic"), "org.mariadb.jdbc" % "mariadb-java-client" % "1.3.6", "com.typesafe.slick" %% "slick" % "3.1.1", "com.typesafe.akka" %% "akka-actor" % "2.4.6", "com.typesafe" % "config" % "1.3.0", "com.typesafe.akka" %% "akka-slf4j" % "2.4.6" )

folex
17.07.2016
21:24:09
а заче там slf4j-nop?

Anatoliy
17.07.2016
21:24:15
Вычитал в доках

Или в каком то примере

Google
folex
17.07.2016
21:24:24
и зачем logback-classic вынут?

nop не нужен

а вот logback-classic нужен

Anatoliy
17.07.2016
21:24:37
а как нужно?

folex
17.07.2016
21:24:50
logback-classic и akka-slf4j

должно хватить

Anatoliy
17.07.2016
21:25:10
libraryDependencies ++= Seq( "org.json4s" %% "json4s-native" % "3.3.0", "org.slf4j" % "slf4j-classic" % "1.6.4", "org.mariadb.jdbc" % "mariadb-java-client" % "1.3.6", "com.typesafe.slick" %% "slick" % "3.1.1", "com.typesafe.akka" %% "akka-actor" % "2.4.6", "com.typesafe" % "config" % "1.3.0", "com.typesafe.akka" %% "akka-slf4j" % "2.4.6" ) ?

folex
17.07.2016
21:26:53
logback-classic

"ch.qos.logback" % "logback-classic" % "1.1.3"

версия может быть другой

наверняка есть новее уже

Ну и такие большие логи в чаты обычно не принято кидать

Anatoliy
17.07.2016
21:28:46
щас попробую

прошу прощения

folex
17.07.2016
21:29:09
lpaste.net или просто текст ошибки

Anatoliy
17.07.2016
21:30:10
Хм... заработало!!! :) Лог начал подцепляться :)

folex
17.07.2016
21:30:15
yay :)

думаю, теперь оно и без аргумента будет работать

Anatoliy
17.07.2016
21:30:29
Теперь осталось подключение к БД сделать и я буду вообще счастлив :)

folex
17.07.2016
21:30:37
из ресурсов он по умолчанию тянет

Google
Anatoliy
17.07.2016
21:30:39
подключение к БД через файл конфигурации :)

folex
17.07.2016
21:30:56
но это такое... не лучший вариант. Если для тестов и продакшна нужные разные конфиги например.

но это уже кому как

Anatoliy
17.07.2016
21:31:21
ну это тоже понятно, но для тестов можно просто аргумент как раз использовать по идее)

folex
17.07.2016
21:31:34
ну в общем я считаю что чем явнее тем лучше

но это вкусовщина

Anatoliy
17.07.2016
21:31:56
Хотя... косяк все же там есть... странно как-то...

заработал дебаг слика который там был включен, а сам способо отображения данных не изменился

Видимо ActorLogging как-то по другому всё выводит...

folex
17.07.2016
21:32:27
оно в stdout льется?

не, akka-slf4j всё в логбэк уводит

Anatoliy
17.07.2016
21:32:59
а как можно проверить? там голый ActorLogging без всяких изменений

Anatoliy
17.07.2016
21:33:05
<configuration> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <!— encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder by default —> <encoder> <pattern>%d{YYYY-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root level="info"> <appender-ref ref="STDOUT"/> </root> <logger name="slick.jdbc" level="info"/> </configuration>

Вот так выглядящий

folex
17.07.2016
21:33:43
перенаправьте вывод логбэка в файл

в общем поиграйтесь с logback.xml, полезно уметь

Anatoliy
17.07.2016
21:34:20
Эм... щас найду как - направлю, а зачем? мне в файл надо только warn и выше. Может даже только error и выше

folex
17.07.2016
21:34:38
чтобы понять, идет ли лог от акторов в логбэк

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

если в файл будут, значит в конфиге неправильно что-то

Google
Anatoliy
17.07.2016
21:35:09
Щас найду как и проверю

folex
17.07.2016
21:35:19
у логбэка хорошая дока

успехов

Alex
17.07.2016
21:36:23
простите шо отвлекаю

на curry on кто нибудь завтра будет?

Anatoliy
17.07.2016
21:37:50
<timestamp key="byDay" datePattern="yyyyMMdd"/> <appender name="FILE" class="ch.qos.logback.core.FileAppender"> <file>log-${byDay}.txt</file> <encoder> <pattern>%logger{35} - %msg%n</pattern> </encoder> </appender> <root level="info"> <appender-ref ref="FILE" /> </root> Вот так отправляю в файл. Файл - создался. Но пишет в консоль

Народ, всем спасибо большое за помощь :) С логами и конфигом уже видимо завтра заканчивать буду)

Эх... либо я где-то накосячил еще, либо удаление все же не отрабатывает перед инсертами...(

Aleksey
18.07.2016
04:55:43
Кстати, зачем нужен dbActor? Почему нельзя просто примешивать трейт?

Admin
ERROR: S client not available

Anatoliy
18.07.2016
04:56:10
Он не нужен, просто когда делал - посчитал что с ним будет лучше

Но... зачем примешивать трейт то?

Aleksey
18.07.2016
04:56:54
Ну или инстанцировать рядышком.

Не суть.

Anatoliy
18.07.2016
04:57:46
да не, трейт там вообще зачем?

обращение к БД идет через объект PoeНужнаяТаблица

Aleksey
18.07.2016
04:59:51
Ну можно сделать trait SomeRepository { def doSomethingInDb(id: String): Future[Something] = { // ... } } class MyActor extends Actor with SomeRepository

Anatoliy
18.07.2016
05:00:18
И что мне это даст?

Я просто действительно не понимаю...

Daniel
18.07.2016
05:04:44
можно конечно всё нафигачить в одном классе, но за чем такое полотно на тысячи строк? значит надо вынести что-то отдельно, логично при этом следовать логике, в одном месте код для работы с базой, в другом веб-апи и тд вопрос, как теперь это связать воедино? тут вариантов много и дело вкусовщины

Google
Anatoliy
18.07.2016
05:05:16
ну так оно так и вынесено

Aleksey
18.07.2016
05:05:47
Актор не самое хорошее решение для вынесения работы с БД по JDBC.

Anatoliy
18.07.2016
05:05:49
есть модельки для работы с базой, преставляют собой что то такое: object PoeAccounts extends ModelDef[PoeAccount, PoeAccountTableDef] { val table = TableQuery[PoeAccountTableDef] def addOrUpdate(row: PoeAccount): Unit = {

а актор уже дергал их просто

Daniel
18.07.2016
05:07:46
актор работает последовательно, что нужно очень редко в клиентском (по отношению к базе) приложении не говоря уже о том что обращаться к нетипизированным акторам вообще сомнительное удовольствие

Anatoliy
18.07.2016
05:09:01
Эм... а как оно должно работать тогда?

Daniel
18.07.2016
05:10:32
Алексей предложил вариант с трейтом, где описана логика работы с базой. Можно еще не трейт подмешивать, а создавать объект сервиса БД и дергать методы этого объекта

Anatoliy
18.07.2016
05:10:39
У меня есть актор который дергает сам себя и раз в секунду проверяет изменения. При этом если есть данные - отправляет эти данные на парсинг другому актору, тот это дело уже всё парсит и разбирает. Если находит то что меня интересует - вносит в базу. Сейчас он это вносит через третий актор, но его вполне возможно убрать

Так я методы объекта и дергаю получается

Меня больше волнует что выполняя с десяток инсертов, я вижу всего 2-5 записей в таблице вместо этого десятка

И я не понимаю почему

Daniel
18.07.2016
05:12:58
разница в том, что когда сервисом бд является актор, то это как труба, а когда обычный объект, то кинул пригорошню запросов и они разом выполнились ну это просто логично, хотя и не критично, если нет проблем с производительностью.

потеряны вызовы - логирование

Anatoliy
18.07.2016
05:13:39
логи есть, щас

http://pastebin.com/zfcuuJAi

Но - это актор, а я так понимаю нужен лог со слика?

Daniel
18.07.2016
05:26:18
Я логику приложения не знаю, поэтому разбираться в этом не буду. Первое подозрение, что где то эксепшн сжирается тихо. Нужно смотреть, что пришло, а что нет на каждом этапе. Логируй вызовы методов. Сомневаюсь, что дело в базе и слике (хотя всякое бывает).

Anatoliy
18.07.2016
05:27:38
Эх... видимо я дурак и это не лечится... Хотя всё же вывод получается странным. У меня там идет indert or update, и в некоторых случаях он выполняет update, учитывая что оно всё очистилось - логично что строки нет. Но тут тогда в другом вопрос - почему он делает update если я перед всеми подобными запросами сищу стеш и жду ответа о том что он закончил всё это дело чистить?

Да, оно заработало, правда непонятно как отрабатывал select что возвращался результат если я перед этим удалял нужные значения из БД... но это ладно, это уже чуть позже буду разбираться)

И опять же всем спасибо за помощь и отзывчивость :)

Michael
18.07.2016
06:17:36
Раз тут такая жара пошла. А кто что для работы с sql (PostgreSQL) базой юзает Интересует от драйвера до orm? А то я слик ковырял ковырял, не нравится он мне особо =(

Vladimir
18.07.2016
07:15:02
Скалайк посмотри

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