
Nikita
18.05.2016
19:31:02
бывают
если нужны выборки - не вариант вообще
может на большом объеме данных с кластером имеет смысл ее брать
банальная выборка с джойном и 2-3 условиями фильтрации на 1к записей может спокойно вызвать 100к ридов внутри базы

Google

Denis
18.05.2016
19:32:40
Жесть
А сам канал коммуникации с клиентским приложением?

Nikita
18.05.2016
19:32:53
на серваке 32гб оперативки, данные влезают в память, rethink все с диска читает

Denis
18.05.2016
19:33:04
Бывает, что уведомления об изменениях не проходят?

Nikita
18.05.2016
19:33:17
возможно, я это не мониторю
но с этой точки зрения все ок
коммуникация, API - идеальное, мне нравится сильнее, чем в монге
и сама идея отличная у базы
но банально делаешь filter - получаешь fullscan

anoru
18.05.2016
19:34:28
А с индексами лучше?

Nikita
18.05.2016
19:34:32
а без разницы
у базы нет оптимизатора запроса

Denis
18.05.2016
19:34:42
Но я так понимаю, серверную часть можно свою подставить

Google

Nikita
18.05.2016
19:35:05
индексы используются только внутри orderBy, get, getAll и еще где-то наверное, но остальное мне не нужно
и везде где используются всегда надо явно сказать - используй индекс
то есть с этим жить можно, но если нужны выборки по данным - бери постгрю или еще что-то под этот кусок

Ҫѐҏӗѫӑ
18.05.2016
19:36:18
постгря — наше все

Nikita
18.05.2016
19:36:40
есть совсем маленький проект (петпроджект) с большим read/write, там выборок нет, работает идеально на слабом железе

anoru
18.05.2016
19:36:41
Использую ретинк в не особо большом проекте, поэтому не сталкивался с проседанием по скорости. Но для меня ретинк умер, когда я не нашел апи для создания таблицы, если она еще не сущетсвует. А т.к. в бд нет ни миграций, ни схем, то в результате написал короткий утилс, который проверяет существует ли таблица и если нет, то создает её. Но все запросы у ретинка разумеется асинхроннные и каким-то образом получилось, что таблица создалась 2 раза.
То есть 2 запроса одновременно проверили, что нет таблицы и запускали асинхронный запрос её создания. "это было на открытие страницы.
Казалось бы - ну да ладно. Но ретинк смог создать 2 таблицы с 1 именем
и просто умер навсегда
отказал экспорт, запуск, импорт


Sasha
18.05.2016
19:36:49
Посоны, прошу не бить за тупой вопрос.
Насколько я понял, реакт - это просто въюха.
Которая рендерится сервером.
Можно ли приделать туда контроллер(ы), чтобы получать данные с RESTful бэкенда?(Как в mvc frontend фреймворках)
И где в таком случае останется роутинг?
Спасмбо.

anoru
18.05.2016
19:36:51
жесть
в ошибке так и писал - 2 таблицы с одним именем

Ҫѐҏӗѫӑ
18.05.2016
19:37:47
жесть внатуре

Nikita
18.05.2016
19:38:17
и еще. Мне тут нужно сделать для петпроджекта распределенный debounce, я гуглил, узнал, что у redis все для этого есть, в тч нотификации о внутренних событиях
они достаточно недавно это написали, так что скорее всего кусок функционала можно покрыть редиской, вместо rethink

Denis
18.05.2016
19:41:07
т/е уведомления об изменения через Redis? :)

Nikita
18.05.2016
19:41:13
ага
http://redis.io/topics/notifications

Антон
18.05.2016
19:41:52
С https://github.com/luin/ioredis это ещё и приятно делать

Nikita
18.05.2016
19:42:01
в моем случае SET foo 1 && EXPIRE foo 30
далее как и работает debounce каждый раз ставим EXPIRE foo 30

Google

Nikita
18.05.2016
19:42:41
а выполняем действие по нотификации о expire событии от редиса
поэтому скорее всего redis можно взять вместо rethink в ряде случаев

Dmitry
18.05.2016
20:56:01
connect же возвращает компонент, в который проброшены просто дополнительные пропсы? Реакту почему-то не нравится случай, когда делаешь что-то подобное:
class bar extends React.component { render() { <div /> } }
let foo = () { return connect()(bar) }
extend default foo;

Semyon
18.05.2016
20:57:43

Dmitry
18.05.2016
20:57:57
ой, это сейчас опечатался
export default foo

Semyon
18.05.2016
20:58:39
а что пишет?

Dmitry
18.05.2016
20:58:46
bundle.js:1083 Warning: MainFormDestination(...): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.
MainFormDestination === foo

Semyon
18.05.2016
20:59:45
const foo = () => connect()(bar);
...
render (foo());
так идет вызов? это же функция
я имел в виду ReactDOM.render

Semyon
18.05.2016
21:02:35
короче, в любой непонятной ситуации: console.log(...)

Dmitry
18.05.2016
21:02:55
я на нем и сижу)
лог на логе и логом погоняет)

Dmitrii
18.05.2016
21:03:57
у меня глупый попрос. как в typescript заимпортить обычный javascript file? :)
var a = require('./ajs'); эквивалент

Semyon
18.05.2016
21:04:30
если webpack, можно лоадеры использовать

Dmitrii
18.05.2016
21:06:17
подозреваю что просто компайлится require('typescript').compile

Google

Dmitrii
18.05.2016
21:07:08
ага
const tsc = require('typescript');
module.exports = {
process(src, path) {
if (path.endsWith('.ts') || path.endsWith('.tsx')) {
return tsc.transpile(
src,
{
module: tsc.ModuleKind.CommonJS,
jsx: tsc.JsxEmit.React,
},
path,
[]
);
}
return src;
},
};

Dmitry
18.05.2016
21:07:38
все эти обертки правда из-за попыток передать контекст при диспатче экшенов, чтобы все редьюсеры использующие этот стейт не обновляли его

Semyon
18.05.2016
21:25:06
Если необходимо иметь доступ к стейту в action, посмотри на redux-thunk
А в редюсере должно быть вообще минимум логики

Dmitry
18.05.2016
21:25:51
не, доступ к стейту мне там не нужен

Admin
ERROR: S client not available

Dmitry
18.05.2016
21:27:28
у меня кейс а ля
combineReducers({
fromSuggest: suggest,
toSuggest: suggest
})
если в таком виде вызывать, то при диспатче экшена стейт в 2х местах сразу обновится
поэтому пробовал для каждого редьюсера биндить свой контекст и экшены с ним же диспатчить, но наткнулся на то, что хочу сделать контейнер, который можно вызвать с разным контекстом, а в mapDispatchToProps не могу его пробросить

Semyon
18.05.2016
21:30:57
Попробуй решить с помощью именования action types, я делаю их с префиксом, который можно менять через фабрику. Не лучшее, возможно, но решение

Dmitry
18.05.2016
21:31:59
Что-то похожее читал в issues редакса

S
18.05.2016
21:33:07

Semyon
18.05.2016
21:33:08
Я недавно тоже столкнулся с этим, пришлось городить фабрики для редюсеров и экшенов, которые параметризуются префиксом.

S
18.05.2016
21:33:47
Эх, у всех одна и та же боль с редаксом
Отсутствие нормального вея для изоляции компонента

Semyon
18.05.2016
21:35:04
Да, такие дела..

Dmitry
18.05.2016
21:35:16
Странно, что она как-то заминается постоянно) Куча issues таких уже, которые постепенно закрываются и такое ощущение, что ни у кого нет абстрактных экшенов не привязанных жестко к конкретному компоненту

Semyon
18.05.2016
21:35:35
Сложно реюзать редюсеры

S
18.05.2016
21:35:56

Google

S
18.05.2016
21:36:27
И type-to-reducer, вроде немного облегчает жизнь

Dmitry
18.05.2016
21:36:51
Гляну

S
18.05.2016
21:36:59
И еще надо все данные нормализованными обязательно хранить

Semyon
18.05.2016
21:37:53
Normalizr?

S
18.05.2016
21:38:07
Да
На самом деле можно и без него
Но чтоб хеши нормализованные были

Semyon
18.05.2016
21:39:15
Короче, из простого редакса получается по размеру ангуляр:(
То есть одноуровневые?

S
18.05.2016
21:39:46
Ангуляр мне больше нравился :)

Dmitry
18.05.2016
22:00:57
пф, еле нашел, что mapStateToProps и mapDispatchToProps во втором аргументе держат ownProps

Антон
18.05.2016
22:06:21

Dmitry
18.05.2016
22:08:35
чуть не накрутил хаков)

trump ? trump ? hillary
18.05.2016
22:08:48
чуть не накрутил хакатонов

Ҫѐҏӗѫӑ
18.05.2016
22:16:11
чуть не нахачил крутонов

Антон
18.05.2016
22:17:43
@chicoxyzzy ты никак протрезветь не можешь? ?