
Viacheslav
15.07.2016
14:01:47
кстати на эту тему вспомнилась статейка, достаточно интересные там товарищ доводы приводит https://habrahabr.ru/post/277113/

Aleksey
15.07.2016
14:03:16
Как я уже писал выше тут идет цикл Event -> Action -> State -> DOM. То есть, пользователь кликнул на чекбокс, мы сгенерировали Action.TodoSetDone. Обновили стейт. Теперь у нас есть стейт, где тудушка в в состоянии Done. Стетйт отдается функции рендер, которая готовит из стейта DOM, в котором отображаение тудушки зачеркнута, а чекбокс кликнут.
Теперь берем "есть несколько элементов в DOM которые содержат одну и ту же инфу". На пример мы хотим три тудулиста которые обновляются связанно. То есть кликнули в одном тудулисте, обновилось во всех трех. Что бы это сделать мы выносим код который рендерит лист в функцию и просто применяем ее три раза. Получам три листа которые синхронно обновляются.
У них это все на джаваскрипте и на фронте.

Google

Luger
15.07.2016
14:18:15
спасибо, да , понятней стало, интересно

IEvgenii
16.07.2016
06:01:18
ничто не ново под луной, что то похожее имплементировано в ELM

Aleksey
16.07.2016
06:10:16
Да. Не знаю кстати кто первый подход начал применять, редакс или элм. У элма изначально было FRP.
Но это все на фронтэнде работает.

Oleksandr
16.07.2016
09:45:50
кто-то работал с https://github.com/getquill/quill ?
интересует сравнение со сликом
читал https://github.com/getquill/quill/blob/master/SLICK.md, но хотелось бы практические отзывы:
перформанс, скорость компиляции, адекватность запросов, асинхронность (с постгресом, я так понял, не умеет)

Diemust
16.07.2016
09:55:43
умеет, можно подключить postgres-async
хотя смотря что ты имеешь ввиду, можно всегда сделать обертку с фьючами over dsl, потому что под сликом тем же синхронный jdbc
насклько я помню

Oleksandr
16.07.2016
10:04:48
а postgres-async jdbc-based?
(если ничего не путаю, jdbc так или иначе что-то будет блокировать)

Diemust
16.07.2016
10:05:18
нет, он не jdbc

Oleksandr
16.07.2016
10:05:24
а, ок тогда

Aleksey
16.07.2016
10:09:06
Я правильно понимаю, что в квиле можно сделать генерацию не sql и не текста, так?

Google

Vladimir
16.07.2016
10:12:59
Имхо, лучше использовать что-то типо scalikejdbc.org или на более хардкорно http://www.jooq.org/

Daniel
16.07.2016
10:13:47
кроме "имхо" есть какие-то сравнения?

Diemust
16.07.2016
10:14:55
в скалайке минусы, или может я так и не понял как, но нельзя типы проверить. Он тебе скажет, что биндеров не хватает, например, а вот что ты пытаешься вставить поле, которое не соответствует кейс классу - такого не нашел. Неудобно
но он более устаканившийся, квил 0,7 версия, там баги всплывают

Vladimir
16.07.2016
10:15:59
Последня версия скалайка намного лучше работает с кастомными типами, Enum например

Ivan
16.07.2016
10:16:12
я в скалайке не нашел как указать уровень изоляции текущей транзакции

Vladimir
16.07.2016
10:16:26
Да, с ним есть такая проблема

Diemust
16.07.2016
10:16:32
а чего раньше с енумами было? я на енумы биндеры пишу просто

Vladimir
16.07.2016
10:16:51
В слике еще была проблема https://github.com/slick/slick/issues/1274 которую только только собрались пофиксить

Bulbu
16.07.2016
10:17:44
db.conn.setTransactionIsolation(level)

Diemust
16.07.2016
10:17:56
вообще можно выбирать по тому, что ты хочешь потащить в проект. слик - шейплес, дуби - скалаз, скалайк - макросы =)

Vladimir
16.07.2016
10:18:12
Синтаксис скалайк в итоге ближе к SQL, нежели как со сликом надо каждый раз гуглить как же они решили там это назвать и через какие гланды надо всё вызвать

Bulbu
16.07.2016
10:18:25
где db: DB

Ivan
16.07.2016
10:19:56
я имел ввиду для каждой разные уровни изоляции для разных транзакций
https://github.com/scalikejdbc/scalikejdbc/issues/442
на подобие этого

Bulbu
16.07.2016
10:22:50
ну, берешь session.conn.setTransactionIsolation(4)
не?

Ivan
16.07.2016
10:23:10
по идее сработает
спасибо за инфу

Google

Bulbu
16.07.2016
10:23:44
работает вроде)

Wystan
16.07.2016
10:29:31
Слик странновато написано -cast to Any , потом куча макро-магии, потом кастуют обратно.

Vladimir
16.07.2016
10:31:37
Со сликом очень сложно разобраться если пытаться смотреть в его исходники... с первого раза всё выглядит дикой кашей из типов и перегрузок ИМХО
что очень сильно осложняет поиск причин той или иной проблемы

Vladimir
16.07.2016
11:12:20

Grigory
16.07.2016
11:12:35
** я использовал quill, до продакшена не дошло (использовали датастакс драйвер в итогде; но имхо квил это тема
с кассандрой использовался**
ну по ощущениям было все удобно быстро и без гемороя

Daniel
16.07.2016
11:13:34
почему тогда отказался?

Vladimir
16.07.2016
11:13:37
Для касандры лучшее что я пользовал фантом

Grigory
16.07.2016
11:21:38
растры храним) тифы.
квил не подошел потому же почему и фантом - мало сушностей в предметной области и не нужны модели) оверинжиниринг

Wystan
17.07.2016
12:12:02
Как вы думаете, почему https://github.com/apache/flink пишут на джаве в основном?

Anatoliy
17.07.2016
19:15:13
Всем привет!
Есть тут живые?)

Aleksey
17.07.2016
19:15:40
Вообще чат бодрый.

Anatoliy
17.07.2016
19:15:59
А помощь оказываете?) У меня уже голова кругом - не понимаю где накосячил :(
А то что бодрый - это хорошо :)

Aleksey
17.07.2016
19:16:56
В зависимости от того, что за проблема :)

Anatoliy
17.07.2016
19:18:55
Использую Slick, необходимо парсить ресурс и вносить изменения в базу.
Делаю таким образом - изменения привязаный к уникальному ИД на каждого пользователя. Т.е. я очищаю данные пользователя по этому ИДу, жду ответа что все хорошо, и потом начинаю вносить новые данные. В логах всё чисто, но при этом данные иногда вносятся не все. Иногда - все. Как это действует - я не понимаю(

Google

Anatoliy
17.07.2016
19:19:05
Работа строится на акторах
Но очистка данных - работает через "?", т.е. ответа дожидаюсь
Есть у кого какие мысли?

Aleksey
17.07.2016
19:22:56
А можно код посмотреть в каком-то виде?

Anatoliy
17.07.2016
19:23:24
Можно, если пастебин скину - нормально?

Aleksey
17.07.2016
19:23:45
Наверно нормально :)

Anatoliy
17.07.2016
19:23:50
сек
http://pastebin.com/XreULfcW

Admin
ERROR: S client not available

Anatoliy
17.07.2016
19:25:19
Нас интересует вот это: val future = dbActor ? DeleteStash(stash.id) // enabled by the “ask” import
тут я получаю ответ что даные удалены(или не удалены, в данном случае просто что метод слика на уделение отработал)

Denis
17.07.2016
19:26:45
Сколько ужаса всякого сразу )

Anatoliy
17.07.2016
19:26:59
Скажите как правильно - переделаю :)

Denis
17.07.2016
19:28:35
Await.result - не используй никогда

Aleksey
17.07.2016
19:28:50
С языка снял :)

Anatoliy
17.07.2016
19:29:04
про это - знаю, но как получить реультат по другому - не понимаю(
Это единственное место где оно используется
Точнее есть еще одно - но там та же причина, не понимаю как обойтись без него)

Alexander
17.07.2016
19:29:51
шалом

Denis
17.07.2016
19:29:57
я не вижу где ты result используешь кроме как для печати в консоль
что тоже кстати не стоит делать

Google

Denis
17.07.2016
19:30:13
есть трейт ActorLogging

Anatoliy
17.07.2016
19:30:15
я его использовал только как просто проверку)

Aleksey
17.07.2016
19:30:43
val f1: Future[Int] = Future.sucessful(0)
val f2: Future[String] = f1.map(_.toString)
f2 pipeTo self

Anatoliy
17.07.2016
19:30:53
про трейт - знаю) и даже использую) там просто написал проверить)
вообще там не нужен такой ответ, писал тчо бы проверить)

Aleksey
17.07.2016
19:31:32
Если у тебя последовательное выполнение запросов то вместо map надо flatMap.

Anatoliy
17.07.2016
19:31:34
там по идее и "?" не нужен, опять же использовал просто проверить дождаться ответа
и это знаю)
case DeleteStash(stash_id: String) => {
log.info(s"Убиваем записи во вкладке stash id: $stash_id")
sender ! PoeCurrencies.deleteWhereStash(stash_id)
}
def deleteWhereStash(stash_id: String): Boolean = {
db.run(table.filter(_.stashId === stash_id).delete)
true
}
Вот как дальше идет

Denis
17.07.2016
19:32:23
а run что возвращает?

Anatoliy
17.07.2016
19:32:32
это delete - т.е. ничего

Denis
17.07.2016
19:32:34
Future?
Future[Unit]?

Anatoliy
17.07.2016
19:33:17
Возможно, в код если смотреть def delete: DriverAction[Int, NoStream, Effect.Write] = {

Aleksey
17.07.2016
19:33:18
db.run(table.filter(_.stashId === stash_id).delete) должен иметь тип Future. Если там произошел экшепшн, то он будет обернут во Future

Denis
17.07.2016
19:33:28
PoeCurrencies.deleteWhereStash(stash_id) pipeTo sender

Anatoliy
17.07.2016
19:33:42
там футура

Aleksey
17.07.2016
19:33:50
А ты вместо этого true возвращаешь. Конечно экшепшн не видно.

Anatoliy
17.07.2016
19:33:54
А чем отличается pipeTo от "!"?

Denis
17.07.2016
19:33:59
https://ru.wikipedia.org/wiki/Футура