
Umren
27.04.2017
16:51:45
читай про паксос
он решает эту проблему
там разные реализации итд

Danil
27.04.2017
16:52:19
Посмотрю, спасибо

Google

Danil
27.04.2017
16:52:31
Тогда в базе хранить таймстамп и норм

Eugene
27.04.2017
18:17:47
Ребята, котлин и даггер, вылетает ошибка при запуске приложения Unresolved reference: DaggerAppComponent. тоесть пропадает сгенерированный файл. Если нажать Build - Rebuild Project то все окей и файл генерируется. В чем может быть проблема


Gleb
27.04.2017
18:23:54
Ну смотри, у меня таск-менеджер. Запись может быть изменена на двух клиентах, пока они в оффлайне. Мне не нужное конфликт разруливать, нужно просто выбрать последнюю запись. Я хочу хранить timestamp для каждой записи, id и булевое значение, говорящее о том, была ли запись изменена на клиенте. И пусть сервер получает все измененные записи, изменяет свою бд и возвращает актуальные записи, а также все записи, измененные на других клиентах после последней синхронизации
Меня конечно за олд скулл ща опять закидают, ...можешь подглянуть сюда
https://www.slideshare.net/KianaTennyson/a-primer-tosyncadapterskianatennyson
мы делали так два id - локальный и глобальный
если есть локальный, но нет глобального - запись добавлена в оффлайне
- после синка - либо акцепт - получили/записали глобальный id(если всё ок), либо отмена(сервер отклонил, н-р не льзя добавить заметку в уже удаленную записную книгу)
поле boolean deleted - если было локальное удаление
после синка либо акцепт, либо отмена (сравниваем ts, возможно после оффлайн удаления запись меняли на вебе - тогда change главнее delet-a)
поле boolean dirty - если было локальное изменение
после синка либо акцепт, либо отмена (сравниваем ts, возможно после оффлайн изменения запись меняли на вебе - тогда web-change главнее local change)
после ?... ну мы не парились - брали все данные одним json-ом с сервера - строили Remote модель, брали все данные с базы - строили Local модель
и делали магический diff-calc, который считал add, change, delete для каждой таблицы.... и применяли.
Расчет был на то, что синк будет происходить скорее всего где-нибудь ночью, пока девайс на зарядке, с домашним wi-fi (pattern C - syncadapter)
Меня конечно за олд скулл ща опять закидают, ...можешь подглянуть сюда
https://www.slideshare.net/KianaTennyson/a-primer-tosyncadapterskianatennyson
мы делали так два id - локальный и глобальный
если есть локальный, но нет глобального - запись добавлена в оффлайне
- после синка - либо акцепт - получили/записали глобальный id(если всё ок), либо отмена(сервер отклонил, н-р не льзя добавить заметку в уже удаленную записную книгу)
поле boolean deleted - если было локальное удаление
после синка либо акцепт, либо отмена (сравниваем ts, возможно после оффлайн удаления запись меняли на вебе - тогда change главнее delet-a)
поле boolean dirty - если было локальное изменение
после синка либо акцепт, либо отмена (сравниваем ts, возможно после оффлайн изменения запись меняли на вебе - тогда web-change главнее local change)
после ?... ну мы не парились - брали все данные одним json-ом с сервера - строили Remote модель, брали все данные с базы - строили Local модель
и делали магический diff-calc, который считал add, change, delete для каждой таблицы.... и применяли.
Расчет был на то, что синк будет происходить скорее всего где-нибудь ночью, пока девайс на зарядке, с домашним wi-fi (pattern C - syncadapter)
видится мне что эвернот поступает схожим образом, так же как и гугл-календарь и контакты
Хотя, поговаривают, firebase ща это всё сам за тебя делает?
... сколько труда, потта и крови(( эх


Дмитрий
27.04.2017
18:41:55
Всем привет! ) Решил изучить методологию реактивного программирования. В частности RxJava или RxJava2 и все что идет с ней в связке. А теперь вопрос что с ней нужно юзать? rxlifecycle rxbinding нужны? Плиз народ закидайте меня инфой что почитать )) направьте нужной тропой )

Дмитрий
27.04.2017
18:44:45
+1 Пропустил много из этой темы. Тоже хочу подтянуть.


Danil
27.04.2017
18:51:49
вот что-то примерно такое и у меня в голове, но я на сервер хочу посылать время последней синхронизации и брать с сервера только все что после этого времени
Меня конечно за олд скулл ща опять закидают, ...можешь подглянуть сюда
https://www.slideshare.net/KianaTennyson/a-primer-tosyncadapterskianatennyson
мы делали так два id - локальный и глобальный
если есть локальный, но нет глобального - запись добавлена в оффлайне
- после синка - либо акцепт - получили/записали глобальный id(если всё ок), либо отмена(сервер отклонил, н-р не льзя добавить заметку в уже удаленную записную книгу)
поле boolean deleted - если было локальное удаление
после синка либо акцепт, либо отмена (сравниваем ts, возможно после оффлайн удаления запись меняли на вебе - тогда change главнее delet-a)
поле boolean dirty - если было локальное изменение
после синка либо акцепт, либо отмена (сравниваем ts, возможно после оффлайн изменения запись меняли на вебе - тогда web-change главнее local change)
после ?... ну мы не парились - брали все данные одним json-ом с сервера - строили Remote модель, брали все данные с базы - строили Local модель
и делали магический diff-calc, который считал add, change, delete для каждой таблицы.... и применяли.
Расчет был на то, что синк будет происходить скорее всего где-нибудь ночью, пока девайс на зарядке, с домашним wi-fi (pattern C - syncadapter)
видится мне что эвернот поступает схожим образом, так же как и гугл-календарь и контакты
ну и мне кажется на стороне сервера лучше производить разрешение конфликтов
Прочитал я про файрбейс, как и реалм, он мне не очень нравится


Gerc
27.04.2017
19:14:03
РЕПЛАЙ ЕСТЬ, нафиг форвардить

Google

Илья
27.04.2017
19:14:29

Danil
27.04.2017
19:14:39
сорян, я в телеграме новичок)

Dmitry
27.04.2017
19:20:08
у фаирбейза нехилые ценники, если у вас запросов много. Так что своя реализация - тоже неплохо.

Иван
27.04.2017
19:30:18
Народ, как в своей вью отловить тач на линию?
Там получается через Rect это надо делать, то как его задать?

Yauhen
27.04.2017
19:41:00
Может напомнит кто библиотеку которая рисует граф зависмостей классов проекта

Dmitry
27.04.2017
20:18:12
Господа, подскажите пожалуйста по пушам - немного запутался. Допустим, у меня есть календарь, куда прилетают какие то события от сервака. Им пользуется 100-200 тыс человек. Вроде звучит логично, что пуши о предстоящем событии я должен бы и сам отслеживать, чтобы лишний раз не нагружать сервак - правильно рассуждаю?
Почему сомневаюсь, потому что в случае с банковскими системами - там уже получается сервер следит за проведенной операцией платежа и вызывает пуш на мобилку. Т.е. я не совсем уверен что отсчеты и таймеры стоит крутить где то на андройде, запускать сервисы и чтобы они за этим следили. Как правильнее сделать?

Дмитрий
27.04.2017
20:30:07

Dmitry
27.04.2017
20:32:47

Андрей
27.04.2017
20:33:47

Dmitry
27.04.2017
20:34:29
А для андройда так себе кейс как ч понимаю?

Дмитрий
27.04.2017
20:34:34

Dmitry
27.04.2017
20:35:13
Сейчас речь не о стоимости а о целесообразности

Андрей
27.04.2017
20:36:00

Роман
27.04.2017
20:36:57
сейчас ше преференс синхронизируются по гугл акаунту
можно там например

Дмитрий
27.04.2017
20:37:46
Из контекста я представил что события синкаются с сервером, тут нужно будет накручивать дополнительную логику по изменению таймеров на клиенте при изменении события на сервере. А что если клиент их не получит? Или получит не вовремя? ИМХО оно того не стоит. Нагрузка на сервер ничтожна в этом случае. На то он и сервер.

Андрей
27.04.2017
20:38:29

Dmitry
27.04.2017
20:43:03
нет, не учитывал

Google

Dmitry
27.04.2017
20:43:12
поэтому вопросы задавал
ок
будем на сервак вешать задачу, всем спасибо

CC -
27.04.2017
20:56:41
Кто-нибудь знает как greenDao работает с java.util.Date? Сейчас встал вопрос какую использовать: util или sql. Я помню, с какой-то датой она умеет работать, но с какой?

Nikolai
27.04.2017
21:03:29
Кому то удается использовать BottomSheetBehavior без боли?
Успешно ловлю NPE https://issuetracker.google.com/issues/37086568
с похожим стектрейсом

Quarx2k ?
27.04.2017
21:06:05
CC - Util
Но лучше юзать лонги

Konstantine
27.04.2017
21:28:27
Кто-нибудь может объяснить, почему notifyItemInserted может не работать?
Сделал кнопку, по нажатию на нее добавляется новый элемент. Добавляется через адаптер, в нем добавляется новый элемент и вызывается notifyItemInserted(mItems.size -1), но эффекту ноль. Хотя в сам лист элемент добавляется
пробовал даже добавлять новый элемент в начало листа и вызывать notifyItemInserted(0), но эффекта так же 0 %)

Роман
27.04.2017
21:30:26
всегда пользовался notifydatasetchanged

Konstantine
27.04.2017
21:31:21
Он пашет, да, уже пробовал. Но говорят notifyItemInserted имеет в запасе анимашку, это всегда приятно)

Alexey
27.04.2017
21:36:11
лолки

Konstantine
27.04.2017
21:36:21
Что интересно

Alexey
27.04.2017
21:36:23
зачем использовать notifydatasetchanged ?
оно мало того что заставляет адаптер обновить все элементы, так и анимации с ней не будет

Konstantine
27.04.2017
21:37:53
Что с позицией 1 работает
%))
а 0 или на последнем месте - нет

Google

Konstantine
27.04.2017
21:38:46
и со 2 работает
а вот крайние нет

Alexey
27.04.2017
21:40:20
magic
и да для анимации надо ресайлеру вью вроде еще аниматор задавать

Admin
ERROR: S client not available

Konstantine
27.04.2017
21:42:04
вроде нет, ибо вызывая не на крайние значения они обновляются с анимашкой)
но вот что не обновляется на крайних местах это очень печалит

Alexey
27.04.2017
21:43:12
хм должно вообще, может у тебя ошибка в коде

Konstantine
27.04.2017
21:44:36
разобрался
забыл убрать у ресайклера setFixedSize %)
правда в таком случае анимация какая-то дерганная, но это ладно

Юсуф
27.04.2017
21:59:15
как превратить Object в Observable<Object>?

Quarx2k ?
27.04.2017
22:00:22
Observable.just(object)

Yuri
27.04.2017
22:16:16
А теперь вопрос как сделать наоборот)

Quarx2k ?
27.04.2017
22:18:28
subscribe :)

Yuri
27.04.2017
22:20:20
А если без него
Не было такого кейса конечно
Но вот подумал а вдруг

Quarx2k ?
27.04.2017
22:22:33
Только так, больше никак не вытащить.

Юсуф
27.04.2017
22:23:47
map () не катит? Или он вернет Observable с другим объектом?

Google

Quarx2k ?
27.04.2017
22:24:00
С другим обьектом
Если такая операция требуется, то что-то не так делается :)

Юсуф
27.04.2017
22:26:14
У меня был объект Observable <Response>, нужно было из Response вытащить ArrayList и вернуть Observable <ArrayList>

Quarx2k ?
27.04.2017
22:27:12
Ну это уже другое. Это нормально

Юсуф
27.04.2017
22:28:15
Я сделал Observable <Response>.map(Response::getArrayList). Но почему-то кажется что это неправильно, не?

Дмитрий
27.04.2017
22:28:44
Всем привет! ) Решил изучить методологию реактивного программирования. В частности RxJava или RxJava2 и все что идет с ней в связке. А теперь вопрос что с ней нужно юзать? rxlifecycle rxbinding нужны? Плиз народ закидайте меня инфой что почитать )) направьте нужной тропой )

Quarx2k ?
27.04.2017
22:28:55
Response сетевой зарос?

Anton
27.04.2017
22:29:11
Сначала просто рх изучи

Quarx2k ?
27.04.2017
22:29:34

Дмитрий
27.04.2017
22:29:40
даже так rxandroid

Quarx2k ?
27.04.2017
22:30:08
Rxjava2 + rxandroid + retrofit-rxjava2
Все что нужно для начала норм

Дмитрий
27.04.2017
22:30:25

Quarx2k ?
27.04.2017
22:30:35
Я доки только читал)
Когда надо было