![](http://files.telegrammy.net/img2/1/1758.jpg)
Igor
18.07.2016
14:31:11
есть два варианта:
1. на СВОЕМ бэкэнде, мы вешаем демона который клиент firebaseDB и подписан на ВСЕ события... он ловит "ага, новое сообщение в чате, ща как я отправлю пушики"
2. Клиент, котроый отправил сообщение сам дернул НАШ бэкэнд "милый бэкэнд, я тут сообщение в чатик написал, давай ты пушики разошлешь"
![](http://files.telegrammy.net/img2/1/1200.jpg)
Alexey
18.07.2016
14:32:10
дада
![](http://files.telegrammy.net/img2/t_logo.png)
Google
![](http://files.telegrammy.net/img2/1/1200.jpg)
Alexey
18.07.2016
14:32:23
положили в базу и на бэке дернули метод типо send_push_to_user
![](http://files.telegrammy.net/img2/1/1758.jpg)
Igor
18.07.2016
14:32:27
вариант 1 - ну пипец просто... трафику будет ходить немеряно :)
![](http://files.telegrammy.net/img2/1/1200.jpg)
Alexey
18.07.2016
14:33:00
![](http://files.telegrammy.net/img2/1/1758.jpg)
Igor
18.07.2016
14:33:05
вариант 2 - ну тоже так себе... т.к. на своем бэкэнде все равно должна быть где-то структурка, какой юзер где живет
![](http://files.telegrammy.net/img2/1/1194.jpg)
Alexander
18.07.2016
14:33:22
безлимита никогда нет
![](http://files.telegrammy.net/img2/1/1758.jpg)
Igor
18.07.2016
14:33:34
![](http://files.telegrammy.net/img2/1/1200.jpg)
Alexey
18.07.2016
14:33:36
![](http://files.telegrammy.net/img2/1/1758.jpg)
Igor
18.07.2016
14:33:46
посмотри прайсинг файрбейза... ничего про трафик там не видишь? не? :)
Алексей, мне насрать на трафик, а на деньги, увы, нет :)
![](http://files.telegrammy.net/img2/1/1200.jpg)
Alexey
18.07.2016
14:34:10
ээ... а ну сцука она ж ограничена по драфе да
![](http://files.telegrammy.net/img2/1/1758.jpg)
Igor
18.07.2016
14:34:10
у меня 150к юзеров, и срут в чатик они дай боже :)
![](http://files.telegrammy.net/img2/1/1200.jpg)
Alexey
18.07.2016
14:34:19
по трафе
![](http://files.telegrammy.net/img2/t_logo.png)
Google
![](http://files.telegrammy.net/img2/1/1758.jpg)
Igor
18.07.2016
14:34:45
но пуши это пол беды
внешнее хранилище - это отстой...
хочу я статистику по юзеру вывести (ну допустим сколько сообщений) - и что мне делать? :) правильно, ломиться на firebase со своего бэкэнда и ... и опять трафик :)
![](http://files.telegrammy.net/img2/1/1200.jpg)
Alexey
18.07.2016
14:36:16
окай, @mrjamesbond ты случаем не юзал Espresso? что-то нигде не могу найти ответ. Решил заюзать и сразу же уткнулся в траблу ((
![](http://files.telegrammy.net/img2/1/1758.jpg)
Igor
18.07.2016
14:36:45
firebase DB не поддерживает никаких query... а значит если хочешь получить количество сообщений по юзерам либо структуру данных в firebase храни так, чтоб это можно было сделать "одним чихом", либо будь добр скачать ВСЮ базу, пропарсить этот неебический json и посчитай сколько сообщений отправил юзер :)
![](http://files.telegrammy.net/img2/1/1200.jpg)
Alexey
18.07.2016
14:36:52
![](http://files.telegrammy.net/img2/1/1758.jpg)
Igor
18.07.2016
14:36:58
Нее, эспрессо не знаю даже что такое
![](http://files.telegrammy.net/img2/1/1570.jpg)
Dmitry
18.07.2016
14:37:33
Есть вопрос кстати - у меня структура проекта mvp. по клику на поле должно вызываться определенное действие, вьюшка как-то реагировать. Все было завязано через интерфейс mView, которым управлял презентер. Класс! Теперь - задание прикрутить к этому ViewModel, что хорошо осуществимо с датабайндингом. А вот с кликом проблемка - я короче долго не думал и закинул presenter как variable в xml лейаут, оттуда ставлю клик с помощью датабайндинга, а в презентере - метод onClick(View view){}, на что мне во время код ревью покрутили пальцем у виска. Говорят, мути onClick() во ViewModel, только вот я запутался , как мне прокинуть команду далее в презентер, как это вообще логически связать? Первое что на ум приходит - прокинуть оповещалку-нитерфейс, но может есть более изящный способ?
![](/img/link.jpg)
![](http://files.telegrammy.net/img2/1/1758.jpg)
Igor
18.07.2016
14:37:35
(я iOS разработчик, ежели чего) :)
сорри, мне надо отлучиться минут на 10
вывод: если чатик нужно быстро прямо сейчас - firebase - супер решение... но потом придется переписывать его на свой бэкэнд
![](http://files.telegrammy.net/img2/1/1200.jpg)
Alexey
18.07.2016
14:38:20
![](http://files.telegrammy.net/img2/1/1758.jpg)
Igor
18.07.2016
14:38:33
ну я под android тоже пишу :)
![](http://files.telegrammy.net/img2/1/1200.jpg)
Alexey
18.07.2016
14:38:34
![](http://files.telegrammy.net/img2/1/1758.jpg)
Igor
18.07.2016
14:38:49
вообще я типа CTO теперь в своем проекте... надо же где-то людей хантить :)
![](http://files.telegrammy.net/img2/1/1200.jpg)
Alexey
18.07.2016
14:39:04
СТО?
ну обычно рекрутеры хантят
![](http://files.telegrammy.net/img2/1/1758.jpg)
Igor
18.07.2016
14:39:14
это типа \../ :)
техдир по нашенски
![](http://files.telegrammy.net/img2/t_logo.png)
Google
![](http://files.telegrammy.net/img2/1/1200.jpg)
Alexey
18.07.2016
14:40:47
ну понял, но вообще это дело рекрутеров
![](http://files.telegrammy.net/img2/1/1570.jpg)
Dmitry
18.07.2016
14:41:15
вопрос пролистался быстро
эээх
![](http://files.telegrammy.net/img2/1/1200.jpg)
Alexey
18.07.2016
14:41:24
Дима
сейчас попытаюсь переварить твой вопрос и ответить
![](http://files.telegrammy.net/img2/1/1570.jpg)
Dmitry
18.07.2016
14:41:42
кк
![](http://files.telegrammy.net/img2/1/1200.jpg)
Alexey
18.07.2016
14:42:59
там может имелось в виду что тебе надо в лаяуте вернуть OnClickListener
OnClickListener getOnClickListener()
ну короче создать метод в презентере, который вернет OnClickListener
![](http://files.telegrammy.net/img2/1/1570.jpg)
Dmitry
18.07.2016
14:44:03
вообще сказали убрать во вью модель метод onClick
![](http://files.telegrammy.net/img2/1/1200.jpg)
Alexey
18.07.2016
14:44:23
а в лаяуте у тебя есть презентер ты можешь сделать что-то типо такого в лаяуте: android:onClick = "@{presenter.getOnClickListener()}"
![](http://files.telegrammy.net/img2/1/1570.jpg)
Dmitry
18.07.2016
14:44:36
да, так и сделано было
![](http://files.telegrammy.net/img2/1/1200.jpg)
Alexey
18.07.2016
14:44:48
так у тебя mvp с дата биндингом?
![](http://files.telegrammy.net/img2/1/1570.jpg)
Dmitry
18.07.2016
14:44:56
да
![](http://files.telegrammy.net/img2/1/1200.jpg)
Alexey
18.07.2016
14:45:07
оу оу, какая адская связь обычно databinding предполагает mvvm
![](http://files.telegrammy.net/img2/1/1570.jpg)
Dmitry
18.07.2016
14:45:20
ну у меня была мысль
в случае этой вьюхи - отказаться от презентера вообще
![](http://files.telegrammy.net/img2/1/1200.jpg)
Alexey
18.07.2016
14:45:31
потому что viewmodel это из mvvm
последние 2 буквы
![](http://files.telegrammy.net/img2/1/1570.jpg)
Dmitry
18.07.2016
14:45:41
согласен
![](http://files.telegrammy.net/img2/t_logo.png)
Google
![](http://files.telegrammy.net/img2/1/1200.jpg)
Alexey
18.07.2016
14:45:49
и презентера тогда быть не должно
ну типо либо презентер либо вьюмодель
![](http://files.telegrammy.net/img2/1/1570.jpg)
Dmitry
18.07.2016
14:46:25
хорошо. Ты подтвердил мои догадки
![](http://files.telegrammy.net/img2/1/1200.jpg)
Alexey
18.07.2016
14:46:32
?
![](http://files.telegrammy.net/img2/1/1570.jpg)
Dmitry
18.07.2016
14:46:44
спасибо)
![](http://files.telegrammy.net/img2/1/1200.jpg)
Alexey
18.07.2016
14:50:31
кстати да @mrjamesbond, я вот всегда скептически отношусь к таким вещам типо firebase. Слишком как-то легко всё, чую не ладное, но заранее не могу предугадать что пойдет не так. Просто когда слишком просто, то в большинстве случаев всегда есть подводные камни, ибо за простоту надо платить.
![](http://files.telegrammy.net/img2/1/1758.jpg)
Igor
18.07.2016
15:40:37
я даже подумываю о написании своего клона (чтоб хостился у себя)
firebaseDB не хватает всего трех штук: возможности хостить у себя, pre/post action handler'ов и query
![](http://files.telegrammy.net/img2/1/1200.jpg)
Alexey
18.07.2016
15:42:07
![](http://files.telegrammy.net/img2/1/1758.jpg)
Igor
18.07.2016
15:42:43
pre/post handler'ы смогут работать только в купе с self hosted... а на это они не пойдут никогда :)
![](http://files.telegrammy.net/img2/1/1194.jpg)
Alexander
18.07.2016
15:42:58
вообще есть, можно написать. Но там всё очень хреново доходит
![](http://files.telegrammy.net/img2/1/1560.jpg)
Максим
18.07.2016
22:55:43
Эх, денежки
А времени нет
![](http://files.telegrammy.net/img2/1/1802.jpg)
Denis
19.07.2016
05:48:23
Перенёс в @mobile_jobs
![](http://files.telegrammy.net/img2/4/4160.jpg)
Alexey
19.07.2016
06:32:44
А времени нет
Если вы о моем предложении. Я работаю на результат , когда есть время работайте без сжатых сроков
![](http://files.telegrammy.net/img2/1/1188.jpg)
Ivan
19.07.2016
08:17:33
> @mrjamesbond
если соберетесь писать клона firebase в opensource я с вами)
![](http://files.telegrammy.net/img2/1/1758.jpg)
Igor
19.07.2016
08:28:54
![](/img/link.jpg)
![](http://files.telegrammy.net/img2/3/3602.jpg)
Р2
19.07.2016
08:31:52
Представляю самую первую сырую версию моего конкурента FireBase: продукт TaraBAAS (http://tarabaas.com/), универсальная мобильная платформа, позволяющая разработчику приложений фокусироваться на GUI. Все необходимые операции по хранению данных и бизнес-логике обеспечит платформа.
Теперь бекенд не нужен - все необходимые данные можно писать и читать средствами http-апи в Тарабасе.
Сейчас реализовано:
* Создание проекта
* Создание и чтение бд по схеме авро (отсутствует Update, Delete)
* Создание, чтение и удаление данных.
Документация по использованию апи доступна здесь: http://tarabaas.com/#!/documentation
В документации приведены конечные curl запросы, позволяющие путём копипасты сразу всё потрогать "за вымя".
Используемые модули:
lua - backend
angular - frontend
Tarantool 1.6.8-735-g84fcf9b
https://github.com/tarantool/http - master
https://github.com/tarantool/avro-schema - master
Из фич, которые запланированы:
* авторизация владельцев проекта
* TOTP авторизация API
* вставка кастомного lua функционала владельцеов проекта.
Смешная проверка нагрузки:
# siege -c 100 -t 1m http://tarabaas.com/api/projects/804600c4-96f7-4e99-87ab-4a46d99ad8ba/databases/test
Transactions: 9817 hits
Availability: 100.00 %
Elapsed time: 59.10 secs
Data transferred: 4.71 MB
Response time: 0.09 secs
Transaction rate: 166.11 trans/sec
Throughput: 0.08 MB/sec
Concurrency: 15.36
Successful transactions: 9817
Failed transactions: 0
Longest transaction: 0.16
Shortest transaction: 0.08
Конечно же это надо запустить на серьёзном железе, но займусь этим позже. Так что сейчас буду рад любому фидбеку.
![](/img/link.jpg)
![](http://files.telegrammy.net/img2/1/1188.jpg)
Ivan
19.07.2016
08:36:19
![](http://files.telegrammy.net/img2/t_logo.png)
Google
![](http://files.telegrammy.net/img2/1/1188.jpg)
Ivan
19.07.2016
08:39:49
так что могу быть полезен вроде)
вообще задача нетривиальная же вроде,написать что-то такое
![](http://files.telegrammy.net/img2/1/1758.jpg)
Igor
19.07.2016
11:03:03
![](/img/link.jpg)
![](http://files.telegrammy.net/img2/3/3852.jpg)
Vitaly
19.07.2016
11:05:17
Вроде тут вчера наоборот писали, что не стоит Firebase использовать.
![](http://files.telegrammy.net/img2/1/1758.jpg)
Igor
19.07.2016
11:06:08
![](http://files.telegrammy.net/img2/3/3852.jpg)
Vitaly
19.07.2016
11:10:55
![](http://files.telegrammy.net/img2/1/1758.jpg)
Igor
19.07.2016
12:52:42
А хантить тут правила не запрещают? :) Ищу "senior" андроид разработчика. Предпочтительно Москва. Фуллтайм. Преимущественно удаленка. ЗП - хорошая :) Проект один и свой. Заказной разработкой левых проектов заниматься не придется. (http://windyapp.co) - если в хобби есть виндсерфинг\серфинг\кайтбординг\яхтинг - прям вообще хорошо. Стучить в приват!
![](http://files.telegrammy.net/img2/1/1200.jpg)
Alexey
19.07.2016
12:53:56
а почему круто иметь в хобби виндсерфинг\серфинг\кайтбординг\яхтинг?
это сразу + 20% к зп?)))
![](http://files.telegrammy.net/img2/1/1758.jpg)
Igor
19.07.2016
12:54:17
нет, это +80% интереса к работе :) Я делаю приложеньку для ветрозависимых :)