
lamo2k
08.08.2016
19:07:53

Alex
08.08.2016
19:10:19

Alexander
08.08.2016
19:11:31
Ну так вроде бизнес требование – в любом случае проверять телефон
Хоть при отправке, хоть в реалтайме - всё равно база сольётся )

Google

Vitaly
08.08.2016
19:13:21

Alex
08.08.2016
19:13:48
и это огромное количество комбинаций.
Телефоны перебрать проще.

Evgeny
08.08.2016
19:16:38
Хуйню несёшь, кому нужно перебирать телефоны?

Alex
08.08.2016
19:17:29
Получить базу для спама, вариант два.

Алексей
08.08.2016
19:17:45
сливаешь телефоны пользователей - посылаешь им спам - все пользователи уверенны что это ваш сервис виноват
еще кучу способов для мохинаций и атак могу подкинуть

Evgeny
08.08.2016
19:18:00
Вы хуйню несёте, оба

Alex
08.08.2016
19:18:18
ваще.

Алексей
08.08.2016
19:18:34

Alex
08.08.2016
19:18:47

Google

Алексей
08.08.2016
19:19:45

Evgeny
08.08.2016
19:20:24
Телеграм мне не запрещает вводить любой номер

Alex
08.08.2016
19:20:43
Телеграм тебе говорит что номер уже занят?

Evgeny
08.08.2016
19:20:46
И все проверки на дос — на сервере
НУ ДА

Alex
08.08.2016
19:20:56
а дос непричем

Дмитрий
08.08.2016
19:21:18

Alex
08.08.2016
19:21:27
юзером vasyapupkin

Timur
08.08.2016
19:21:38
ребята
есть вопрос
руакт и progressive web apps
реакт
как совместим ? как вы относитесь к PWA

Dmitriy
08.08.2016
19:22:24
да пусть сливают
"замучаются пыль глотать"?

Timur
08.08.2016
19:32:46
?

Dmitriy
08.08.2016
20:32:55
это к обсуждению слива базы номеров выше

Denis
08.08.2016
21:15:02
Парни, у нас сегодня родилась группа по Cycle.js - достаточная интересная вещь из мира FRP. Многие уже слышали. Кому интересно и кто активно использует, добро пожаловать: https://telegram.me/cyclejs_ru
Ответственный за неё Александр @prinzc - все вопросы по модерации к нему. Также он большой эксперт по Cycle.js и может много что интересного рассказать. Enjoy! ??

from
08.08.2016
21:18:26
как будто стёб :) https://github.com/andrewngu/sound-redux/blob/master/scripts/containers/App.js#L32-L51

Владимир
08.08.2016
21:20:05
??

Google

Denis
08.08.2016
21:20:06

Владимир
08.08.2016
21:20:10
в чем стеб ?
но у него нет роутера, поэтому нормальное решение что бы не тащить либу в проект

from
08.08.2016
21:20:56
в чем стеб ?
ну уж если так надо уточнить, то тут )) https://github.com/andrewngu/sound-redux/blob/master/scripts/containers/App.js#L36-L40

Владимир
08.08.2016
21:21:19
еще уточни, 2 разных компонента

from
08.08.2016
21:21:39

Denis
08.08.2016
21:21:40
Чел просто не сделал over-engineering :)

from
08.08.2016
21:21:51
тоже конечно :( https://github.com/andrewngu/sound-redux/blob/master/scripts/actions/environment.js#L20
это к теме http://webaim.org/blog/user-agent-string-history/
или к этой скорее ) https://www.reddit.com/r/programming/comments/4vy1jo/even_jetbrains_can_write_stupid_code_or_why_a/


Bogdan
09.08.2016
07:02:32
Народ, подскажите пожалуйста, столкнулся тут проблемой написания древовидного списка на редаксе. Есть стейт с плоской структурой где поле children - содержит айдишники детей - {nodes: {1: {id: 1, title: 'title', ..., children: ['2','3','4']}}, ...} и есть компонент ноды с примерно такой разметкой
class Node extends React.Component {
render(){
var {node} = this.props;
return (
<div className={style.node}>
<div className={style.text}>
{node.title}
</div>
<div className={style.children}>
{node.children.map(nodeId=><Node key={nodeId} nodeId={nodeId}/>)}
</div>
</div>
)
}
}
connect((state, props)=>{
return {
node: state.nodes[props.nodeId]
}
})(Node)Все было хорошо пока не потребовалось отсортировать вложенные ноды по позиции (позиция хранится в ноде в виде поля position). Но в рендер-методе отсортировать не можем потому что поле children хранит только айдишники.
1) можно добавить в мап-стейт-ту-пропс вытаскивание чилдренов
connect((state, props)=>{
var node = state.nodes[props.nodeId];
return {
node,
children: node.children.map(nodeId=>state.nodes[nodeId]).sort((a, b)=> a.position-b.position)
}
})(Node)но тогда мы получаем перерендер всех нод на каждое изменение стейта из-за того что map возвращает каждый раз новый массив.
2) использовать реселект смысла нет потому что из двух входящих аргументов node.children и state.nodes - выражение createSelector(node=>node.children,state=>state.nodes, (children, stateNodes)=>children.map(nodeId=>stateNodes[nodeId]).sort((a, b)=> a.position-b.position) все равно будет возвращать новый массив потому что будет перевычисление селектора из-за того что при изменении любой ноды в состоянии будет каждый раз новый объект state.nodes
Ecть еще варианты?


Stepan
09.08.2016
07:11:02
Отсортировать в редьюсере?

Bogdan
09.08.2016
07:16:21
Получается это единственный вариант? Просто он слишком усложняет логику когда нужно следить за сортировкой при каждом изменении стейта. А если нужно будет добавить сортировку по другим полям? Прийдется делать какой-то пересчет или добавлять отдельное поле childrenByTitle - где адишники детей будут отсортированы по имени

Stepan
09.08.2016
07:29:44
Просто других вариантов с оптимизацией скорее всего нет, так как, если делать сортировку детей на стороне компонента, то компонент будет в любом случае зависеть от всех своих дочерних нод (он должен как-то определить порядок их рендеринга).
Можно в редьюсере всё-таки подготовить какую-то часть данных. Например, заменить идшники детей на них самих, тогда перерендеринг будет только при изменении компонента или потомка, но не любой соседней ноды. Но, может, я чего-то и упустил.

Vladimir
09.08.2016
07:49:25
Можно сделать второй вариант с memoize
Кстати, еще кому-нибудь кроме меня кажется, что нормализованные сторы - зло?
Третий вариант - сделать подготовку данных в компоненте

Stepan
09.08.2016
07:56:33
Мне тоже кажется, что нормализация данных в клиентских сторах не нужна. Там данные должны храниться в виде, удобном для использования. А подготовка данных в компоненте не снимает проблему перерендеринга компонента при любом исменении подключенного к нему стейта. Если только использовать shouldComponentUpdate.

Vladimir
09.08.2016
07:56:53
> @Vogre
Кстати, еще кому-нибудь кроме меня кажется, что нормализованные сторы - зло?
если нормализация сделана на клиенте при помощи normalizr, то я плюсую ) я пока так и не понял профита, особенно когда нужна денормализация для отправки измененных данных на бекенд.
По сути вопроса, может есть смысл в ноде делать проверку в shouldComponentUpdate, чтобы не перерендеривать каждый раз

Google

Alex
09.08.2016
07:57:32
Нормализация полезна только когда у моделек зависимости друг на дружку
Но если проект хоть сколько нибудь обещает быть большим то я бы заложился.
ибо в плохом сценарии может оказаться что модельки рассинхронизированы если стор не нормализован.
Вопрос критично это или нет зависит от конкретного кейса где произошла рассинхронизация.

Vladimir
09.08.2016
07:59:26
да, наверное все от конкретной ситуации зависит

Alex
09.08.2016
07:59:55
Все зависит от того насколько толстый у вас клиент, если вся вся логика на бэкенде, а фронт только рисует, то как правило смысла нет.

Bogdan
09.08.2016
08:02:38
если стор не нормализирован то чтобы обновить ноду где-то глубоко на 20-м уровне вложенности прийдется писать сложный редюсер которому надо вернуть стейт со всеми новыми объектами начиная с этой ноды и до начала вложенности

Admin
ERROR: S client not available

Vladimir
09.08.2016
08:05:34
при использовании например ImmutableJS это сделать легче используя setIn, mergeIn, mergeDeep и тп
а вот денормализировать нормализированые данные, если бекенд ждет на сохранение такую-же структуру, какую он прислал, вот тут у меня возникали вопросы большие

Alex
09.08.2016
08:06:35
у меня просто был json-api, там отношения моделек по айди присваивались
т.е в "структуре" ты посылал только те филды что поменялись, а также если нужно было изменить модельки отношений то слал их айдишники

Vladimir
09.08.2016
08:08:15
ну, например бек по запросу модели выдает большой json, со множеством вложений, и после обновления данных в форме к примеру, нужно сохранить обновленную модель, и бек ждет такиеже данные, а не нормальизированые


Stepan
09.08.2016
08:12:00
По-моему, так как, нормализация нас не спасает от проблем, связанных с синхронизацией данных между клиентом и сервером, предотвращением утечки памяти (если всё сохранять и ничего не удалять, то рано или поздно на клиенте окажется вся серверная БД) и п.р. Поэтому одно только использование нормализации не даёт ничего. Можно делать такие редьюсеры которые создают пусть и ненормализованную, но корректную, эффективную и удорбную для использования структуру данных. Однако тут, конечно, всё зависит от конкретной ситуации.
Например, в случае дерева, совершенно не обязательно хранить его в виде списка нод с ИД шниками потомков. Можно построить настоящее дерево, при этом никакого дублирования данных не будет. Но, если, например приходится часто искать ноды этого дерева по ИД, то линейный список будет предпочтителен. А можно сохранить и то и другое, позаботившись о том, чтобы данные коррекно обрабатывались и изменялись редьюсерами в 2х местах.

Vladimir
09.08.2016
08:24:58

Alex
09.08.2016
09:13:46
Ребят

Ilya
09.08.2016
09:13:53
?

Alex
09.08.2016
09:13:54
в react как воткнуть script?

Google

Alex
09.08.2016
09:14:06
т.е. render() { return <div><script /></div> }

Ilya
09.08.2016
09:14:07
в каком смысле?

Alex
09.08.2016
09:14:37
ну если вот так воткнуть, то react его втыкает, но почему-то не грузит браузер его)
т.е. render() { return <div><script /></div> }

Ilya
09.08.2016
09:14:46
http://stackoverflow.com/questions/34424845/adding-script-tag-to-react-jsx

Alex
09.08.2016
09:14:48
т.е. даже в network пусто

Andrey
09.08.2016
09:15:05
dangerouslySetInnerHTML

Alex
09.08.2016
09:15:05
Ога, так и было изначально
другого способа нет?))

Ilya
09.08.2016
09:15:26
https://facebook.github.io/react/tips/dangerously-set-inner-html.html

Alex
09.08.2016
09:16:48
Немного странный способ =))
Но я понял, спс

Mikhail
09.08.2016
09:17:29
Нужен тип maybe для чекбокса, чтобы хранить в стейте indeterminate: типа и не true и не false, а так maybe
?

Konstantin
09.08.2016
09:18:08

Alex
09.08.2016
09:18:39
так и было =)
dangerouslyInnerHtml почему-то не пашет =)

Konstantin
09.08.2016
09:26:35
https://github.com/yariv/ReactScriptLoader

Алексей
09.08.2016
09:28:11
кто-то еще пользуеться миксинами?

Konstantin
09.08.2016
09:35:52