@react_js
React — русскоговорящее сообщество

Обсуждаем React.js и экосистему. См. также: @reactnative_ru, @apollo_ru, @protonnative_ru, @nodejs_ru, @js_ru, @uiux_ru Вакансии и поиск работы: @javascript_jobs Правила: http://bit.ly/our_etiquette Sponsored with ❤️ by www.axept.co

5822 members

Архив канала @react_js 18 апреля 2016 г.

04:42:28 ДП
User 171026916
Привет
04:43:25 ДП
User 171026916
Подскажите, как запускается webpack если он установлен локально? Просто в консоли webpack ругается
04:47:02 ДП
User 215373
а как у вас config назван?
05:29:38 ДП
User 120407271
Реакт говорили они, серверный рендеринг. Работает без js. 
http://motherfuckingwebsite.com/
05:58:24 ДП
06:20:46 ДП
User 166617281
User 120407271
Реакт говорили они, серверный рендеринг. Работает без js. 
http://motherfuckingwebsite.com/
You spent hours on it and added 80 kilobytes to your fucking site, and some motherfucker jabbing at it on their iPad with fat sausage fingers will never see that shit.
06:20:55 ДП
06:27:19 ДП
User 23384802
https://twitter.com/thomasfuchs/status/708675139253174273
twitter.com/thomasfuchs/status/708675139253174273
Marc was almost ready to implement his "hello world" React app
07:38:19 ДП
User 47375937
не подскажите, что лучше использовать для того что бы на клиенте сделать мок сервер, с парой ендпоинтов, и набитой фикстурами базой?
07:38:29 ДП
User 47375937
синон?
07:41:11 ДП
User 47375937
нужно для тестов, и для демнстрации фронта без сервера
07:44:43 ДП
User 36743327
Интересная штука: https://github.com/typicode/json-server
07:47:00 ДП
User 47375937
да, штука интересная, только чучуть не то ) но заберу в копилку, спасибо )
07:54:19 ДП
User 171203444
Парни, а кто нибудь знает какой нибудь классный пакет, который будет автоматически подставлять имя js файла с его версией. Например по гуиду
07:54:29 ДП
User 43388904
User 47375937
не подскажите, что лучше использовать для того что бы на клиенте сделать мок сервер, с парой ендпоинтов, и набитой фикстурами базой?
https://github.com/iridakos/duckrails попробуйте использовать это, мне помогло
github.com/iridakos/duckrails
A development tool to quickly & dynamically mock API endpoints :duck: - iridakos/duckrails
07:55:29 ДП
User 171203444
Космос тоже наверное может подойти
07:58:26 ДП
User 47375937
все сложно ) мне бы что нибудь простое, что бы index.html открыл, а там фронт, который кидает запросы к серверу, а запросы все типа синоном замоканы, и идут просто в маленькую базу, с парой записей ) а тут надо инстансы отдельные поднимать
07:58:30 ДП
User 120407271
json-server очень крутая штука
07:58:46 ДП
User 47375937
вот она выглядит проще чем duckrails )0
08:17:34 ДП
User 101934369
User 23384802
https://twitter.com/thomasfuchs/status/708675139253174273
twitter.com/thomasfuchs/status/708675139253174273
Marc was almost ready to implement his "hello world" React app
Для того чтобы сделать приосто приложения на Реакт не нужен даже NPM.
Вот отличная статья на эту тему:
https://github.com/petehunt/react-howto
github.com/petehunt/react-howto
react-howto - Your guide to the (sometimes overwhelming!) React ecosystem.
08:19:11 ДП
User 1754343
User 4627228
Помимо высоко защищенных структур, в Европе высоко ценится privacy, особенно в Германии и определенных сегментах - отключённый JS там достаточно частая ситуация для защиты от трекинга. Там даже есть закон об уведомлении, если используются Cookies:
https://www.cookielaw.org/your-cookie-law-rights/
cookielaw.org/your-cookie-law-rights
New laws have been put in place across the EU to help protect your privacy while online. All websites owned by companies based in the EU should be complying with this law, and if they aren't you can complain about it either to the site owners or to legal authorities that can require websites to comply or face heavy fines.
И как немцы пользуются ютубом?
08:26:15 ДП
08:26:23 ДП
User 1754343
Европейские требования, говорите?
08:27:27 ДП
User 23384802
@sergey_smyshlyaev
Статью читали как на англ, так и на русском. Но та пикча просто ирония. На собственном опыте знаю и на отзывах других, что больше люди застревают на бойлерах и изучение вебпака)
08:28:05 ДП
User 101934369
@anorudes так им тоже нужно было эту статью всучить
08:28:42 ДП
User 23384802
Сейчас уже ие8 практически не поддерживается, а без js достаточно показывать плашку. Дело не в том - разрабатывается в России или нет. Про ie8 бывают исключения редкие. Например, если это банковский софт
08:29:02 ДП
User 1754343
Ну это совсем другое дело
08:30:12 ДП
User 23384802
Тем более сам реакт 15 оффициально даже не поддерживает его. 
Вообще на эту тему много статей есть и интересных мнений. Зачем тратить кучу времен, чтобы хаками и костылями заставить работать апп на доисторическом браузере или же не внедрять современные технологии для этого ради незначительного процента юзера. Это затратно как по времени, так по деньгами для компании, так и для мотивации разработчиков 
08:52:28 ДП
User 153807368
думаю, основная мысль которую хотел донести Денис: "Инженер - это про решение задач"
08:54:05 ДП
User 153807368
есть задача поддерживать ие8 и nojs - извольте
нет - никто не заставляет
08:58:16 ДП
User 1754343
С этим я полностью согласен
09:04:58 ДП
User 74329021
Что некоторым из нас необходима поддержка IE8 и NoScript, в силу своих специфичных задач - факт, но в коммьюнити как правило любые попытки обсудить эту проблему и некоторые пути решения, сразу же натыкаются на шквал “Ой, автор, бросьте, это никому не надо, не майтесь ерундой, идите в ногу с временем! Ха-ха-ха, за окном же 23 век!”, и это раздражает <__<
09:05:47 ДП
09:08:34 ДП
User 153807368
мне было бы интересно узнать как решаются такие проблемы. никогда не знаешь с чем придется столкнуться в будущем. а подобные стереотипы (23 век и т.д.) создают ложную иллюзию, что с этим не придется столкнуться никогда.
09:12:53 ДП
User 1282989
User 25721027
Подскажите, как-то решается проблема css-modules для псевдоэлементов и :hover ?
https://www.smashingmagazine.com/2016/04/finally-css-javascript-meet-cssx/ вот тут решили
smashingmagazine.com/2016/04/finally-css-javascript-meet-cssx
JavaScript is a wonderful language. It’s rich, it’s dynamic, and it’s so tightly coupled to the web nowadays. The concept of writing everything in JavaScript doesn’t sound so crazy anymore. First, **we started writing our back end in JavaScript**, and then Facebook introduced JSX, in which we mix HTML markup with JavaScript. Why not do the same for CSS? Imagine a web componentdistributed as a single `.js` file and containing everything — markup, logic and styles. We would still have our basic style sheets, but the dynamic CSS would be a part of JavaScript. Now this is possible, and one way to achieve it is with CSSX. CSSX is a project that swallowed my spare time for a month. It was challenging and interesting, and it definitely pushed me to learn a lot of new stuff. The result is a set of tools that allows you to write vanilla CSS in JavaScript.
09:21:43 ДП
User 57141131
Господа, подскажите годнейшую либу для валидации форм, которая работала бы с redux. И что вы используете у себя?
09:24:04 ДП
User 153807368
https://github.com/erikras/redux-form
от создателя react-redux-universal-hot-example
есть еще react-formal
github.com/erikras/redux-form
A Higher Order Component using react-redux to keep form state in a Redux store - erikras/redux-form
09:24:40 ДП
09:24:46 ДП
User 1754343
так вот они какие, реакт разработчики)
09:25:17 ДП
User 171203444
Вот теперь все стало на свои места
09:25:35 ДП
User 171203444
Я то думал, под чем redux-form писались
09:28:57 ДП
User 182495393
Подскажите как вы пишите юнит тесты для ES6? Как я понимаю многие современые фрэймоврки еще не подерживают ES6 поэтому перед тестами надо компалить весь код на ES5
09:29:15 ДП
User 23384802
User 57141131
Господа, подскажите годнейшую либу для валидации форм, которая работала бы с redux. И что вы используете у себя?
redux form слишком переусложнен
09:29:23 ДП
User 23384802
у нас есть проект на нем, пожалели много раз
09:29:26 ДП
User 23384802
лучше посмотри в сторону http://github.com/davidkpiano/react-redux-form 
github.com/davidkpiano/react-redux-form
react-redux-form - Create forms easily in React with Redux.
09:29:48 ДП
User 23384802
redux form, кстати, скоро таким же будет
09:29:56 ДП
User 23384802
в новой версии перепишут полностью весь апи. 1 в 1 как тут
09:30:22 ДП
User 153807368
о спасибо за инфу 👍
09:31:00 ДП
User 3412850
User 182495393
Подскажите как вы пишите юнит тесты для ES6? Как я понимаю многие современые фрэймоврки еще не подерживают ES6 поэтому перед тестами надо компалить весь код на ES5
mocha --compilers js:babel-core/register
09:31:03 ДП
User 3412850
И фсе
09:31:21 ДП
User 171203444
Блин, круто наверное, но переписывать на новую компоненту перед релизом уже как то не хочется
09:31:52 ДП
User 182495393
User 3412850
mocha --compilers js:babel-core/register
Спасибо!
09:32:32 ДП
User 68520717
необязательно —compilers
09:32:44 ДП
User 68520717
но можно просто —require baber-register
09:33:07 ДП
User 68520717
работает со всеми тест-раннерами, а не только с мокой
09:33:37 ДП
User 68520717
test: 'mocha —require babel-register',
 test: 'tape test.js —require babel-register | tap-spec',
 test: 'ava —require babel-register',
09:33:44 ДП
User 68520717
from here https://github.com/iamstarkov/generator-zen/blob/master/app/test-frameworks.js#L3
github.com/iamstarkov/generator-zen/blob/master/app/test-frameworks.js
generator-zen - ☯ zen node module scaffolder
09:33:51 ДП
User 57141131
User 23384802
лучше посмотри в сторону http://github.com/davidkpiano/react-redux-form 
github.com/davidkpiano/react-redux-form
react-redux-form - Create forms easily in React with Redux.
Спасибо за альтернативу!
09:35:45 ДП
User 23384802
https://github.com/erikras/redux-form/issues/726
github.com/erikras/redux-form/issues/726
IMPORTANT This post is outdated, but I will leave it here for posterity. React v15 was released before I could get the next rewrite of redux-form published, so I had to release v5 as the Controlle...
09:35:49 ДП
User 23384802
Вот issue на тему выше
09:37:32 ДП
User 1754343
Здесь нет людей, которые пробовали и реакт и ангулар 2? И сделали какие то выводы для себя
09:37:47 ДП
User 1245357
User 74329021
Что некоторым из нас необходима поддержка IE8 и NoScript, в силу своих специфичных задач - факт, но в коммьюнити как правило любые попытки обсудить эту проблему и некоторые пути решения, сразу же натыкаются на шквал “Ой, автор, бросьте, это никому не надо, не майтесь ерундой, идите в ногу с временем! Ха-ха-ха, за окном же 23 век!”, и это раздражает <__<
Плюсую
09:39:30 ДП
User 1245357
User 1754343
Здесь нет людей, которые пробовали и реакт и ангулар 2? И сделали какие то выводы для себя
Что реакт лучше?
09:40:00 ДП
User 1754343
Нет, я понимаю, что слова "лучше, хуже" вообще нельзя употреблять в общем смысле
09:40:25 ДП
User 1754343
что реакт подходит для одних людей/проектов, а ангулар для других
09:40:42 ДП
User 182495393
User 68520717
from here https://github.com/iamstarkov/generator-zen/blob/master/app/test-frameworks.js#L3
github.com/iamstarkov/generator-zen/blob/master/app/test-frameworks.js
generator-zen - ☯ zen node module scaffolder
👌🏻
09:45:38 ДП
User 23384802
С тем, что ie8 требуется для многих кейсов согласен, но я о том, что не надо впадать в крайности и говорить, что только в России забивают на него
10:04:46 ДП
User 74329021
В России просто есть такое особое состояние, называется “западло” :D
10:06:10 ДП
10:10:31 ДП
User 171203444
User 74329021
В России просто есть такое особое состояние, называется “западло” :D
Причем у многих оно пермаментно
10:22:41 ДП
User 181923858
Ребят подскажите как организовать последовательность асинхронных запросов на сервер в redux. Изучаю React и redux и возникла проблема что иногда на странице появляются данные из запроса который отправлен раньше но ответ пришёл позже.
10:24:26 ДП
User 47375937
co(function* () { yield firstAsunc(); yield secondAsync(); })
10:25:13 ДП
User 47375937
ну или redux-saga
10:28:57 ДП
User 4627228
А кто уже использует mobx?
10:29:22 ДП
User 4627228
Или что-то подобное, что более эффективно работает с большими потоком?
10:29:28 ДП
User 4627228
событий/actions
10:30:07 ДП
User 47375937
я с kefir.js работаю часто, но это немного не то
10:31:32 ДП
User 89478045
Коллеги, у кого есть опыт написание e2e тестов?
10:37:35 ДП
User 181923858
Я имею ввиду что есть middleware который обрабатывает запросы но например при переходах по ссылкам в каждом компоненте вызывается подгрузка данных в одну переменную state. И может случится так что при переходе на 3 ссылку сначала появятся данные которые должны а потом те что подгружались по запросу второй ссылки, так как они просто пришли позже
10:38:39 ДП
User 47375937
тогда проще в middleware организовать очередь запросов, если их порядок важен
10:39:20 ДП
User 47375937
или делать их параллельно, а мержить в стейт последовательно
10:39:53 ДП
User 181923858
Может я просто что то не так делаю но не знаю как объяснить понятным языком
10:40:56 ДП
User 649317
можно что то из такого попробовать https://github.com/itsmepetrov/redux-combine-actions
github.com/itsmepetrov/redux-combine-actions
redux-combine-actions - Redux middleware for combining actions
10:40:59 ДП
User 101934369
User 181923858
Может я просто что то не так делаю но не знаю как объяснить понятным языком
Да нет, всё понятно: результаты первого запроса используются чтобы сформировать второй, и так далее, поэтому запросы нужно делать последовательно.
10:41:18 ДП
User 181923858
Да именно
10:43:01 ДП
User 181923858
А есть пример с очередью запросов в middleware
10:43:09 ДП
User 47375937
опять я с ко, но обычно так решаю
 co (function* (){
  const firstResult = yield firstRequest(); //first action
  const secondResult = yield secondRequest(data:firstRequest.data);
})
10:45:03 ДП
User 47375937
если есть redux-thunk, а экшны запросы возвращают Promise, то через генераторы это все просто работает
10:46:02 ДП
User 181923858
Именно
10:46:23 ДП
User 181923858
Запросы все возвращают promise использую axios
10:46:43 ДП
User 47375937
тогда через генераторы попробуй
10:47:01 ДП
User 47375937
у тебя в firstResult будет ответ от сервера
10:47:07 ДП
User 47375937
от первого запроса
10:47:09 ДП
User 47375937
ну и так далее
10:47:28 ДП
User 181923858
Так а если количество запросов не 2 а n
10:47:36 ДП
User 181923858
Просто все в массив
10:47:42 ДП
User 181923858
И потом вызывать?
10:48:01 ДП
10:48:29 ДП
User 47375937
простыню сейчас покажу, но в ней все так и работает )
10:48:39 ДП
User 47375937
co(function* () {
      yield clearOffers();
      yield clearOfferContainers();
      yield startSearch();

      const offerContainerResponse = yield createOfferContainer({...search.conditions});

      var {
        response: {
          entities: {
            offerContainers
          },
          result: offerContainerId
        }
      } = offerContainerResponse;

      let { status: containerStatus } = offerContainers[offerContainerId];
      yield setOfferContainerId(offerContainerId);

      searchStatus = yield getSearchStatus();
      let progress = 0;

      while (containerStatus === 'processing' && searchStatus === SEARCHING ) {

        const start = new Date().getTime() + 5000;
        yield getOffers(offerContainerId);

        const offerContainerResponse = yield getOfferContainer(offerContainerId);
        const offerContainer = offerContainerResponse.response.entities.offerContainers[offerContainerId];

        containerStatus = offerContainer.status;

        if ( offerContainer.progress !== progress ) {
          progress = offerContainer.progress;
          yield setProgrss(progress);
        }

        yield sleep(start - new Date().getTime());
        searchStatus = yield getSearchStatus();
      }

      searchStatus = yield getSearchStatus();

      if ( searchStatus === SEARCHING ) {
        yield getOffers(offerContainerId);
        yield searchComplete();
      }

    });
10:49:45 ДП
User 181923858
Спс буду смотреть
10:50:37 ДП
10:50:45 ДП
10:53:21 ДП
User 47375937
сложные там ответы приходят
10:54:06 ДП
User 47375937
+ normalizr отрабатывает, приводит все к виду {entities:[], result: id}
10:54:32 ДП
User 23384802
@dex157 normalizr вроде как раз для этого придумали, но я не пробовал
10:54:58 ДП
User 47375937
да, просто, если одна сущность, то ее вот так и приходится вытаскивать из ответа
10:55:04 ДП
User 181923858
Чёт пока не совсем понял
10:56:26 ДП
User 47375937
тут асинхронный запрос создает search контейнер, и код заберает ответы пока контейнер со статусом processing
10:56:45 ДП
User 47375937
все асинхронно
12:40:34 ПП
User 20888913
Влад, а что тебе не нравится?
12:40:35 ПП
12:40:55 ПП
User 739642
Заходите болтать голосом https://discord.gg/0fqa3L0XnnNs44A8
12:40:57 ПП
User 68520717
8 строчек чтобы получить глубокое значение из объекта
12:41:32 ПП
User 68520717
@urbis мне кажется это mis-usage of destructuring
12:41:50 ПП
User 68520717
это не упрощает а делает только сложнее
12:42:07 ПП
User 122105125
страшненько смотрится
12:42:29 ПП
User 68520717
const offerContainers = R.path(['response', 'entities', 'offerContainers'], offerContainerResponse);
const offerContainerId = R.path(['response', 'result'], offerContainerResponse);
12:42:56 ПП
User 122105125
ну или lodash.get
12:43:39 ПП
User 68520717
или .get да
12:44:00 ПП
User 47375937
да я и не спорю, что можно красивее сделать, разрабатываю почти в одиночку, мне так стало привычнее, а подобные вопросы дело вкуса, потому что для одной цели, вытащить данные
12:45:35 ПП
User 122105125
ну главное, чтобы ты потом завтра вспомнил, что ты хотел сказать тут )
12:46:47 ПП
12:47:52 ПП
User 122105125
Ну и lodash еще защищает от осутствия промежуточных св-в. Не уверен, что в случае с destructuring assignment это будет работать
12:48:41 ПП
User 47375937
request до этого проверяется, так что в этом плане проверка идет уровнем ниже
12:52:46 ПП
User 68520717
destructuring насколько я помню fail-safe и вернёт undefined если что-то по пути не найдёт
12:55:49 ПП
User 122105125
по-моему null или дефолтное значение, если укажешь
02:15:44 ПП
User 160533651
User 47375937
co(function* () {
      yield clearOffers();
      yield clearOfferContainers();
      yield startSearch();

      const offerContainerResponse = yield createOfferContainer({...search.conditions});

      var {
        response: {
          entities: {
            offerContainers
          },
          result: offerContainerId
        }
      } = offerContainerResponse;

      let { status: containerStatus } = offerContainers[offerContainerId];
      yield setOfferContainerId(offerContainerId);

      searchStatus = yield getSearchStatus();
      let progress = 0;

      while (containerStatus === 'processing' && searchStatus === SEARCHING ) {

        const start = new Date().getTime() + 5000;
        yield getOffers(offerContainerId);

        const offerContainerResponse = yield getOfferContainer(offerContainerId);
        const offerContainer = offerContainerResponse.response.entities.offerContainers[offerContainerId];

        containerStatus = offerContainer.status;

        if ( offerContainer.progress !== progress ) {
          progress = offerContainer.progress;
          yield setProgrss(progress);
        }

        yield sleep(start - new Date().getTime());
        searchStatus = yield getSearchStatus();
      }

      searchStatus = yield getSearchStatus();

      if ( searchStatus === SEARCHING ) {
        yield getOffers(offerContainerId);
        yield searchComplete();
      }

    });
async/await
03:14:48 ПП
User 37835067
Ребят есть вопрос, ставлю обработчик onClick на кнопку и при клике, в обработчик попадает дочерний элемент.
Как можно предотвратить такое поведение? 

<button onClick={this.props.clickDialDigit} data-digit="call"><i className="fa fa-phone"/></button>
03:15:49 ПП
User 3412850
Не знаю как это в реакте, но вообще это же про делегирование. Чекай в хэндлере на что клик
03:16:00 ПП
03:16:02 ПП
03:16:10 ПП
User 3412850
Это про event capturing
03:16:28 ПП
User 120647221
через ref прозще ж button получить, не?
03:16:35 ПП
User 38228256
это поведение обработчиков по умолчанию, только если вешать отдельный обработчик на дочерний элемент, в который вешать e.stopPropagation(). Вообще не очень понятно, зачем нужно, чтобы на дочерний элемент не вызывалось событие. Возможно, дочерний элемент не должен быть дочерним у блока, на который вешается обработчик?
03:16:57 ПП
User 38228256
то есть им место в одном общем контейнере — кнопке и, получается, иконке
03:17:03 ПП
User 3412850
User 38228256
это поведение обработчиков по умолчанию, только если вешать отдельный обработчик на дочерний элемент, в который вешать e.stopPropagation(). Вообще не очень понятно, зачем нужно, чтобы на дочерний элемент не вызывалось событие. Возможно, дочерний элемент не должен быть дочерним у блока, на который вешается обработчик?
+
03:18:30 ПП
User 38228256
<div><button onClick={this.props.clickDialDigit} data-digit="call" /><i className="fa fa-phone"/></div>
03:18:34 ПП
User 38228256
вот так то есть
03:18:46 ПП
User 38228256
ну или местами поменять иконку и кнопку, смотря как по дизайну
03:20:13 ПП
User 38228256
отдельно замечу, что иконочные шрифты вроде бы все, если я не ошибаюсь
03:20:15 ПП
User 23384802
@dmacompton есть event.target и event.currentTarget
03:20:31 ПП
User 23384802
Один ссылается на чилд, который кликнул. Другной на элемент, где обработчик
03:20:33 ПП
User 23384802
в данном случае буттон
03:20:54 ПП
User 23384802
на lern.javascript.ru хорошо написано по этому поводу
03:21:04 ПП
User 38228256
ааааа, я понял о чем речь
03:21:21 ПП
User 23384802
https://learn.javascript.ru/event-bubbling
learn.javascript.ru/event-bubbling
03:21:24 ПП
User 38228256
я думал, дело в том, что при клике на дочерний элемент не должен вызываться обработчик по задаче
03:21:28 ПП
User 37835067
Почитаю спасибо. Я по клику достаю дата-атрибут.
03:21:30 ПП
User 38228256
все правильно, да
03:21:49 ПП
User 37835067
Да не должен. Спасибо всем
03:22:19 ПП
User 23384802
может и так) 
03:23:49 ПП
User 38228256
слушайте, а классическая отправка массива картинок через superagent — это что-то типа такого, да?

req
  .post(url)
  .attach('images', files[0])
  .attach('images', files[1])
03:24:23 ПП
User 38228256
а то я пытаюсь тут настроить их обработку на серваке через multer и res.files стабильно пустой
03:24:42 ПП
User 38228256
думаю, может я не так superagent использую, дока там очень двусмысленная
03:25:07 ПП
User 38228256
.end() еще в конце конечно же
03:25:48 ПП
User 153807368
User 23384802
https://learn.javascript.ru/event-bubbling
learn.javascript.ru/event-bubbling
вдогонку, применительно к реакту:
"...To register an event handler for the capture phase, append Capture to the event name; for example, instead of using onClick, you would use onClickCapture to handle the click event in the capture phase."
https://facebook.github.io/react/docs/events.html
reactjs.org/docs/events.html
A JavaScript library for building user interfaces
03:28:34 ПП
User 23384802
Недавно тут спрашивал про жизнь без redux
03:28:54 ПП
User 23384802
https://github.com/mobxjs/mobx
эту штуку теперь везде советуют. Кто пробовал?
github.com/mobxjs/mobx
Simple, scalable state management. Contribute to mobxjs/mobx development by creating an account on GitHub.
03:29:04 ПП
User 23384802
Помню, тут сидит кто-то, кто даже плагины к ней писал )
03:29:30 ПП
User 38228256
а про картинки никто не в курсе? в какую сторону копать хотя бы?
03:29:51 ПП
User 38228256
а то я уже голый formData засовываю в superagent, и без результатов
03:30:09 ПП
User 38228256
может есть хороший гайд по отправке картинок с клиента?
03:30:20 ПП
User 38228256
чувствую, что какая-то совсем дурацкая ошибка
03:33:01 ПП
User 309556
@anorudes я пробовал и написал в соавторстве с автором mobx https://github.com/chicoxyzzy/rx-mobx
github.com/chicoxyzzy/rx-mobx
rx-mobx - [DEPRECATED] :sparkles: Convert MobX observables to RxJS and vice-versa
03:33:23 ПП
User 309556
но вообще mobx не нужен если есть rx
03:33:34 ПП
User 23384802
Сережа, а ты же потом вроде писал "mobx не нужен". Не понравился значит?
03:33:39 ПП
User 309556
а так штука хорошая, простая
03:33:47 ПП
User 309556
но не нужен да :)
03:33:56 ПП
User 23384802
rx тоже не знаю, к сожалению. Если сравнить с redux?
03:34:43 ПП
User 309556
ну они немножко разные. их сравнивать неправильно
03:34:59 ПП
User 309556
mobx делает реакт реактивным
03:35:43 ПП
User 56924675
реактивный реакт 😱
03:36:22 ПП
User 309556
да. потому что сам по себе реакт не реактивный
03:36:35 ПП
User 309556
но хорошо прикидывается
03:36:47 ПП
User 309556
многие даже верят
03:37:11 ПП
User 39182759
а на cycle.js кто-то писал?
03:37:49 ПП
03:37:59 ПП
User 309556
но вот он уж точно не нужен
03:38:53 ПП
User 56924675
блин, все слишком быстро меняется) не упеешь попробовать инстурмент - а он уже не нужен 😔
03:42:04 ПП
User 309556
он всегда был не нужен. просто я успел это выяснить и сохранить тебе полчаса жизни ;)
03:42:16 ПП
User 39182759
еще скажи elm не нужен!
03:42:24 ПП
User 60122561
А что нужно?
03:42:31 ПП
User 309556
я это давно говорю же
03:42:39 ПП
User 309556
элм не нужен!
03:42:46 ПП
User 60122561
А то я немного в смятении теперь, вроде вчера говорили что всё это нужно, а уже не нужно.
03:43:12 ПП
User 309556
просто вчера меня тут не было)
03:43:22 ПП
User 101934369
Мне кажется, Observable - это довольно ограниченная абстракция, прямое изменения стейта гораздо легче использовать в общем случае.
03:44:12 ПП
User 309556
до тех пор, пока у тебя нет асинхронности и нескольких источников событий, которые должны влиять на что-то одно
03:45:06 ПП
User 101934369
Но ведь весь вторичный стэйт можно высчитаывать в компонентах, а в сторе хранить только первичный стэйт.
03:45:55 ПП
User 309556
до тех пор, пока тебе не нужен sideway data loading
03:46:31 ПП
User 309556
по причинам производительности или любым другим
03:46:36 ПП
User 101934369
User 309556
до тех пор, пока тебе не нужен sideway data loading
А reselect разве не для этого?
03:46:52 ПП
User 309556
реселект — это мемоизация функций всего лишь
03:47:28 ПП
User 101934369
Но sideway data loading через него можно сделать, сам видел :)
03:47:57 ПП
User 101934369
Или там какая-то скрытая проблема есть?
03:48:02 ПП
User 309556
можно и без него
03:48:15 ПП
User 309556
там есть проблема и не одна
03:48:52 ПП
User 309556
но все именно по причине того, что это мемоизация вычислений по аргументам и не более того
03:49:17 ПП
User 309556
то есть он годен только для этой конкретной оптимизации
03:49:32 ПП
User 309556
и опять же не спасает во всех случаях
03:50:32 ПП
User 101934369
То есть всё дело в производительности в итоге?
03:51:04 ПП
User 309556
дело чего?
03:51:53 ПП
User 101934369
Дело того, почему стоит использовать Observable вместо reselect
03:52:47 ПП
User 309556
обзервабл стоит использовать при сложных асинхронных штуках, а реселект для того, что я уже дважды писал выше
03:53:45 ПП
User 309556
в лодаше тоже есть мемоайз
03:54:08 ПП
User 309556
это ведь не значит, что лодаш может заменить обзёрваблы
03:56:06 ПП
User 309556
обычно frp либы тоже мемоизацию имплементят. так что я не очень хорошо понимаю почему вообще сравниваются reselect и концепция observable
03:59:21 ПП
User 309556
и конкретно в mobx вот этот reselect встроен сразу
04:00:04 ПП
User 309556
в случае rx / most этим можно еще и управлять
04:00:14 ПП
User 162236709
кто колится elm?
04:00:56 ПП
User 309556
странные упоротые чуваки, которые раньше писали на кофискрипте наверное
04:01:23 ПП
User 101934369
Скорее кто раньше писал на Haskell или OCaml
04:02:07 ПП
User 309556
кто раньше писал на хаскелле, тот юзает ghcjs и плачет от того, что сигнал - это не монада. и вообще в элме монад нет
04:02:47 ПП
User 101934369
Даже в виде сторонней либы нет?
04:03:20 ПП
User 162236709
User 309556
странные упоротые чуваки, которые раньше писали на кофискрипте наверное
нет, elm очень интересная вещь
04:03:37 ПП
User 162236709
User 101934369
Скорее кто раньше писал на Haskell или OCaml
и вот
04:03:47 ПП
User 309556
элм вещь интересная, но его нет смысла учить
04:03:58 ПП
User 162236709
User 309556
кто раньше писал на хаскелле, тот юзает ghcjs и плачет от того, что сигнал - это не монада. и вообще в элме монад нет
ghcjs это слишком
04:03:59 ПП
User 309556
и юзать тем более
04:04:20 ПП
User 162236709
User 309556
элм вещь интересная, но его нет смысла учить
для себя, саморазвитие, обмазывание ФП
04:04:36 ПП
User 162236709
Proudly coded on Elm (TM)
04:05:07 ПП
User 309556
ну это да. поэтому можно почитать про элм и продолжать писать на том, на чем писал раньше
04:05:18 ПП
User 309556
у элма на сайте есть охеренной ценности доки
04:05:26 ПП
User 309556
про виды frp в частности
04:05:27 ПП
User 162236709
User 309556
ну это да. поэтому можно почитать про элм и продолжать писать на том, на чем писал раньше
есть такое
04:05:34 ПП
User 309556
охрененнейшее чтиво!
04:05:53 ПП
User 162236709
я планирую выучить elm, когда закончу хаскель и узнаю основы ocaml, lambda calculus уже выучил (те части, которые посоветовала книга)
04:06:03 ПП
User 23384802
обколятся своим elm.. )
04:06:20 ПП
User 56924675
а как же алгебраические типы данных, как без них 😢
04:06:30 ПП
User 309556
лучше на норм фп языке писать, который не так ограничен
04:06:39 ПП
User 162236709
User 309556
лучше на норм фп языке писать, который не так ограничен
так не фронтенд же
04:06:54 ПП
User 162236709
elm круто canvas реализовал btw
04:06:55 ПП
User 309556
вот clojurescript или scala.js или ghcjs могут вне веба пригодиться
04:07:09 ПП
User 309556
а элм - бесполезный
04:07:13 ПП
User 309556
он обречен
04:08:02 ПП
User 309556
для него тупо очень многого нет и описаний типов для js либ нет
04:08:19 ПП
User 162236709
ну он растет же
04:08:36 ПП
User 309556
он растет уже много лет
04:08:42 ПП
User 162236709
нормально
04:08:52 ПП
User 309556
но ему очень далеко до уровня кложи или скалы в вебе
04:09:08 ПП
User 309556
и, скорее всего, он их никогда не догонит
04:09:57 ПП
User 309556
на окамле или f# вот тоже можно в js транспилиться
04:10:04 ПП
User 309556
лучше их выбрать
04:10:15 ПП
User 309556
если ML хочется обмазываться
04:10:55 ПП
User 309556
вот пьюрскрипт еще есть — такой же ненужный как elm, но с монадами
04:11:18 ПП
User 54173658
интересно, нахрена их столько делают сейчас?
04:11:19 ПП
User 162236709
мне хаскель больше ML нравится, но f# (тот же окамл, они же почти одинаковые) выучу, ибо dotnet
04:11:19 ПП
User 309556
и у него хотя бы cabal используется, а не свой пакетный менеджер
04:11:36 ПП
User 21727291
только asm.js
04:11:46 ПП
User 162236709
User 309556
вот пьюрскрипт еще есть — такой же ненужный как elm, но с монадами
слышал про него, но как-то elm его победил по ощущениям
04:12:05 ПП
User 309556
пьюрскрипт больше на хаскелль похож
04:12:21 ПП
User 309556
элм сильно проще
04:12:28 ПП
User 162236709
ну а еще не стоит забывать что многие вещи с elm берут :)
04:12:30 ПП
User 309556
поэтому его выбирают чаще
04:12:40 ПП
User 309556
а проще он потому что там многого просто нет
04:12:55 ПП
User 309556
js умеет все, что умеет элм
04:12:59 ПП
User 101934369
Кстати, вот почему в Элм сигналы не Монады: https://github.com/elm-lang/elm-compiler/issues/413#issuecomment-31166568
github.com/elm-lang/elm-compiler/issues/413
Signals are clearly Applicative Functors since: instance Functor Signal where fmap = lift instance Applicative Signal where pure = constant () = (~) Before I had even discovered (~) ...
04:14:20 ПП
User 309556
а тот, кто хочет на asm.js писать, тот странный. и интересно как вообще тот человек собирается писать только на asm.js
04:14:46 ПП
User 309556
и как работать с DOM
04:15:42 ПП
User 162236709
имплементировать свой dom)))
04:16:05 ПП
User 309556
ээээ… и свой браузер и свой интернет?
04:16:24 ПП
04:16:40 ПП
User 47375937
nix os уже есть, на которой гонять все это можно
04:17:09 ПП
04:19:20 ПП
User 309556
боже это какие-то фп-сектанты
04:19:33 ПП
User 309556
опасные должно быть люди
04:21:01 ПП
User 162236709
User 309556
опасные должно быть люди
хотябы умные
04:21:01 ПП
User 162236709
когда сектанты линукса зачастую нет
04:21:01 ПП
User 162236709
а что скажите о http://nuclide.io/ ?
nuclide.io
Nuclide is built as a single package on top of Atom to provide hackability and the support of an active community. It provides a first-class development environment for React Native, Hack and Flow projects.
04:21:23 ПП
User 162236709
мне кажется, про него все забыли совсем
04:23:48 ПП
User 60122561
User 162236709
а что скажите о http://nuclide.io/ ?
nuclide.io
Nuclide is built as a single package on top of Atom to provide hackability and the support of an active community. It provides a first-class development environment for React Native, Hack and Flow projects.
всё можно пакетом к атому поставить, поэтому кому нужно просто так делают, наверное
04:24:18 ПП
User 162236709
User 60122561
всё можно пакетом к атому поставить, поэтому кому нужно просто так делают, наверное
так понятно, что можно, но это не важно
04:24:27 ПП
User 60122561
это вроде как чисто форк атома с кастомными пакетами, так что ничего крутого типа как в вскод там не будет
04:24:59 ПП
User 12791
я с nuclide работаю каждый день. Если проекты монструозные то очень много полезных фич помогают избежать боли :)
04:25:26 ПП
User 12791
в остальном это тотже атом
04:27:25 ПП
User 57648988
User 162236709
а что скажите о http://nuclide.io/ ?
nuclide.io
Nuclide is built as a single package on top of Atom to provide hackability and the support of an active community. It provides a first-class development environment for React Native, Hack and Flow projects.
Nuclide же это и есть пакет к атому. Он лучше всех поддерживает FlowType, поэтому в нём и сижу, удобно.
04:42:44 ПП
User 309556
Денис, почему Flow?
04:43:08 ПП
User 309556
зачем вообще его выбирают? я не могу этого понять
04:43:20 ПП
User 309556
есть же тайпскрипт
04:43:52 ПП
User 101934369
Flow это gradual typing
04:43:54 ПП
User 57648988
Flow — из-за gradual typing, хотя он и в TS вроде есть?
04:44:15 ПП
User 6936842
Flow проще встроить в существующий проект
04:44:38 ПП
User 309556
есть
04:44:45 ПП
User 309556
чем проще?
04:45:17 ПП
User 309556
тайпскрипт умеет js
04:45:53 ПП
User 309556
может
04:49:48 ПП
User 309556
мой главный контраргумент против flow в том, что его обычно юзают вместе с бабелем, и получается, что два разных парсера должны каждый раз парсить проект. в тайпскрипте можно отказаться от бабеля (и кучи недокументированной магии от проядка примения плагинов), но если хочется, то можно юзать с бабелем и также иметь две разные стадии парсинга, только при этом можно даже в бабель все нужное передать из compiler api тайпскрипта
04:49:58 ПП
User 309556
кстати интересно есть ли уже такой проект
04:50:59 ПП
User 309556
против ts есть лишь один аргумент — отсутствие nullable типов. но они уже наполовину приехали
04:51:08 ПП
User 309556
для литералов все ок
04:51:21 ПП
User 309556
для объектов вот-вот вмержат
04:51:28 ПП
User 57648988
отсутствие nullable беспокоило, но да, делают
04:51:57 ПП
User 309556
во флоу можно дефинишны тайпскриптовые?
04:52:47 ПП
User 309556
и есть ли что-то кроме этого ужасного нуклеида, что умеет как-то работать с flow?
04:56:29 ПП
User 309556
да сам flow изначально фейл. просто надо было взять тайпскрипт, но, видимо, это фейл менеджеров команды hack
04:57:07 ПП
User 309556
которые тупо не знали про ts / подумали, что это не очень дорого выйдет
04:58:37 ПП
User 60122561
зато flow написан на OCaml!
04:59:06 ПП
User 309556
ну охуеть теперь
05:00:20 ПП
User 60122561
ну я к тому, что такое чувство что это был некий экспериментальный проект, который потом выкатили, когда ts изначально как-то серьезнее задумывался
05:03:04 ПП
User 77929618
Facebook написал React, из-за чего уровень доверия и принятия их опен сорс проектов значительно вырос]
05:09:47 ПП
User 153807368
Каждый хочет свой личный лунный модуль с блекджеком
05:11:07 ПП
User 47375937
конкуренция это всегда хорошо
05:11:50 ПП
User 153807368
А манагеры flow подумали небось, о это же мс, у них ничего не взлетит, мс не может в жс и тд
05:11:50 ПП
User 309556
в данном случае нет
05:12:12 ПП
User 309556
у мс как раз всегда было ок с жс
05:12:43 ПП
05:12:50 ПП
User 101934369
Со времён VBscript?
05:13:04 ПП
User 153807368
(Мне просто интересно)
05:13:04 ПП
05:13:31 ПП
User 309556
они хотя бы его не зафейлили как мозилла лол
05:14:23 ПП
User 309556
пруфы - ресурсы мс в интернетах, их опенсорс и js на вин платформах
05:16:18 ПП
User 309556
а также что на них работает Далтон и еще у них есть rx
05:20:43 ПП
05:22:04 ПП
User 86311207
Для любителей фп гляньте в сторону purescript и halogen
05:22:42 ПП
User 86311207
Если Elm считаете игрушкой (в принципе у него много косяков)
05:25:23 ПП
User 86311207
А то что вы выше писали что елм не нужен. Так без него бы не было бы Redux. Да и в самом языке архитектура по приятней, все на своих местах. И пофигу что он без монад и снобстав с Хаскеля)
05:27:02 ПП
User 309556
я еще не писал, что redux тоже не нужен?
05:27:41 ПП
User 47375937
Серёжа, а что нужно то?
05:27:42 ПП
User 309556
а про то, что читать полезно — ну и так понятно
05:27:54 ПП
User 47375937
на чем апы строчить?
05:28:12 ПП
User 309556
нужно frp и компоненты. most + glimmer2 или что-нибудь такое
05:29:12 ПП
User 309556
я как раз пытаюсь из glimmer2 такой себе реакт сделать
05:29:16 ПП
User 309556
без эмбера
05:29:22 ПП
User 309556
но пока не очень получается
05:29:31 ПП
User 309556
доков по нему мало
05:29:45 ПП
User 47375937
чтиво на ночь )
05:29:54 ПП
User 309556
приходится много кода читать и догадываться
05:31:07 ПП
User 309556
вообще у меня есть некоторые сомнения про glimmer2
05:31:26 ПП
User 309556
с ним слишком просто наговнокодить
05:31:51 ПП
User 309556
а в эмбере вообще не понятно пока как оно будет абстрагированно так, чтобы не тормозило
05:31:57 ПП
User 309556
и еще утечек не было
05:34:40 ПП
User 309556
да, про то что нужно — нужно еще чтобы оно было больше похоже на реакт, а не на говносацкслжс
05:34:49 ПП
User 309556
говносайкл
05:37:38 ПП
User 47375937
а ембер то тут причем?
05:38:19 ПП
User 47375937
а, все, нашел
05:39:11 ПП
User 309556
я из него glimmer второй взял поиграться просто и пробую компоненты писать на HTMLBars в стиле реакта
05:39:17 ПП
05:41:47 ПП
User 309556
еще есть чтиво интересное про calmm, но там подход спорный. они засунули frp прямо в jsx
05:42:30 ПП
User 309556
лучше оттуда его вытащить. но тогда mobx получится
05:42:46 ПП
User 47375937
зато на кефире )
05:42:47 ПП
User 309556
а mobx не умеет шедулинг и дебаунс даже
05:43:08 ПП
User 309556
для этого я конвертер и писал
05:43:34 ПП
User 309556
ну а если rx все равно нужен, то лучше его взять, а mobx выкинуть
05:44:20 ПП
User 309556
есть еще yolk. но там тоже спорно
05:44:32 ПП
User 309556
типа как в calmm
05:45:15 ПП
User 309556
это не преимущество
05:45:15 ПП
User 309556
зато на кефире )
05:45:42 ПП
User 47375937
да, просто радует, русские либы видеть
05:46:08 ПП
User 309556
Рома щас суперлегкую фрп либу пишет
05:46:25 ПП
User 309556
но не знаю насколько продвинулся
05:46:29 ПП
User 47375937
basic-streams?
05:46:35 ПП
05:47:25 ПП
User 309556
ну и он писал что придумал как еще ускорить кефир, но смысла нет — получится most
06:07:08 ПП
User 12791
кто нибудь имел дело с параллелелизацией JSON.parse JSON.stringify в node.js? нужно быстро спарсить\сохранить ~30mb данных. Структура одинаковая. Как проще по тредам это разделить? какой IPC  проще реализовать?
06:11:28 ПП
User 4627228
Golang? :)
06:16:27 ПП
User 12791
ну такто любой язык с тредами подойдет. только как это все из node.js достать? :)
06:18:35 ПП
User 4627228
@DenisElistratov
06:20:46 ПП
User 57648988
User 12791
кто нибудь имел дело с параллелелизацией JSON.parse JSON.stringify в node.js? нужно быстро спарсить\сохранить ~30mb данных. Структура одинаковая. Как проще по тредам это разделить? какой IPC  проще реализовать?
Вы сговорились с Кристофером? ) Он такую же задачу решает
https://twitter.com/cpojer/status/721958592933289986

И в треде ответы неутешительные... Там есть 1 здравая идея: не пытаться парсить всё сразу, а делать lookup on-demand — но это если задача позволяет. Кристоферу — нет, ему надо все данные сразу,
twitter.com/cpojer/status/721958592933289986
What's the fastest serialization/deserialization method for node js? Have a 25 mb file and it takes 500ms with JSON.parse.
06:21:17 ПП
User 12791
ну мы одну и туже задачу решаем :)
06:22:37 ПП
User 12791
с учетом того что данные в правильную форму сериализуем, я думал о правильной параллелизации
06:23:04 ПП
User 12791
но так как тут время меньше секунды, то типичный нодовский подход с кучей процессов не пойдет
06:23:09 ПП
User 57648988
Тот же transit.js написан поверх JSON.parse. Все кастомные алгоритмы от лукавого, не обгонят хорошо оптимизированный C++ код JSON.parse. Разве что регулярками парсить, и заложиться на простоту структуры, например flat-массив — RegExp в V8 оптимизированы едва ли не лучше чем JSON.parse...
06:24:39 ПП
User 12791
не. ну с алгоритмами понятное дело тягаться не вариант :)
06:25:06 ПП
User 12791
я больше думаю в сторону разделения этого 30mb файла на 100 кусков и сборки их отдельно
06:25:45 ПП
User 12791
может получится от 500 до 200~ снизить
06:26:10 ПП
User 12791
но не знаю в какую сторону идти. сейчас пишу jruby скрипт который из node вызывается
06:26:36 ПП
User 162236709
.in vs .biz vs .co.uk vs .org.uk vs .org vs .com vs .net vs .azurewebsites.net
06:28:10 ПП
User 89478045
User 12791
но не знаю в какую сторону идти. сейчас пишу jruby скрипт который из node вызывается
Коллега про go истину глаголил. Все же быстрее на нем будет
06:29:29 ПП
User 89478045
Если дочерним процессом вызвать
06:32:55 ПП
User 309556
была хорошая либа для этого, пытаюсь вспомнить название
06:33:13 ПП
User 309556
http://oboejs.com/
oboejs.com
A streaming approach to JSON. Oboe.js is a Javascript library for Node.js and browsers that speeds up web applications by providing parsed objects before the response completes
06:34:39 ПП
User 1754343
HTTP авторизация
06:35:12 ПП
User 309556
только что-то не обновлялась давно
07:36:11 ПП
User 54173658
Еще есть какая то либа со стримящим парсером json