Pull to refresh
41
0
Егор Юртаев @yurtaev

Full Stack Team leader/Solution architect

Send message

Починили старые ссылки RSS https://qna.habr.com/q/1301000

Только это набор веб компонентов, для react-native antd-mobile-rn, и пока что оно на начальной стадии развития, но зная скорость/качество antd очень жду.

https://reactjs.org/docs/context.html#consuming-multiple-contexts


If two or more context values are often used together, you might want to consider creating your own render prop component that provides both.

Код
const ComposeContext1And3 = (props) => (
    <Context1.Consumer>
      {data1 => (
        <Context2.Consumer>
          {data2 => (
            props.children({ data1, data2 })
          )}
        </Context2.Consumer>
      )}
    </Context1.Consumer>
)

class SomeComponent extends React.Component {

  render() {
    return (
      <ComposeContext1And3>
        {({ data1, data2 }) => (
          <div className="...">
            <div>... some markup ...</div>
            <div>... some markup ...</div>

            <span>data1.someValueFromContext1</span>

            <div>... some markup ...</div>
            <div>... some markup ...</div>

            <span>data2.someValueFromContext3</span>

            <div>... some markup ...</div>
          </div>
        )}
      </ComposeContext1And3>
    );
  }
}

Или уже сделали хелперы


По логам есть несколько ошибок, стараемся чинить. Долго логинились в github? Похоже на то что просто инвалидировался токен для логина.

Так получается т.к мы используем http://ghtorrent.org и данные не реалтам. GHTorrent раз в месяц выкладывает дамп данных которые они выдергивают из API. Есть несколько идей на будущее как сгладить этот момент.

Всё что нужно это сделать django 3.0 где всё будет с asyncio… Ради интереса пробовал переделать core часть работы с http запросами на асинхронную модель и как мне показалось это возможно сделать. Самое сложно это переделать работу с базой, думал о том что бы оставить интерфейс api без изменений но только завернуть в корутины и тогда просто во всех местах нужно использовать qs = await User.objects.all(), ну и все остальные места которые подразумевают блокировку. Но опять же, это всё в теории...

Как бы весь смысл P2P в том что трафик ходит напрямую между клиентами без третьих сторон.

Самое печальное в redux-form что в итоге компонент формы намертво связан с библиотекой. С другой стороны я не представляю как поддерживать руками свои формы, если их много и они сложный (представим CRM систему).


Вообще вопрос с формами очень важный, и странно что мало качественных решений в react мире (везде?), тот же formsy-react для меня выглядит хуже в плане продуманности API, и вообще решений мало...

redux-form просто прекрасен. Расширяем, очень продуманный интерфейс, в четыре строки можно завернуть свой инпут, валидаторы как функции, а не магические "required|isEmail|isMagic" которые непонятно где. Только опять же высокий порог вхождения, но зато опять же это всё окупается в будущем. mobx-react-form похож, но на сложных кейсах не пробовал.

MobX выглядит намного "проще" в использование в отличие от redux где необходимо писать больше вспомогательного кода. Но вопрос в том что выбираем, кажущуюся простоту в написание или отсутствие магии в коде с возможностью протестировать почти 100% функционала. Да, не подготовленного человека redux испугает всеми своими actions/reducers/selectors, но в итоге это решает больше проблем чем вносит. Для себя вывел главное преимущество это то что в итоге UI = f(x), где каждый самый маленький компонент можно протестировать изолировано от всей системы, так и весь поток входящих/исходящих данных/событий в целом между компонентами.


MobX это путь назад к angular с магией под капотом. По началу кажется что вычисляемые значения это круто (привет $watch), и везде хвалят что вот у нас в отличии от redux не нужно с этим мучатся, но в итоге у нас скрытая реализация в объекте с this.some.get('name'), в то время как с reselect name = f(x).


Ну и самая горячая фича ради которой я готов страдать это тулинг с перемотками состояний. Да в mobx можно отследить изменения объектов, но с redux можно воспроизвести любое состояние приложения (в момент отправки запроса, невалидные формы и т.д).


В «настоящих» проектах мы получаем данные от сервера или пользовательского ввода, форматируем, валидируем, нормализуем и производим другие операции над ними

Расскажите как работаете с формами. С redux после того как думаешь что разобрался со всем, вспоминаешь про формы и снова уходишь на пару дней в транс.

Есть параметр mem_limit, с остальным плохо и ждет решени #363
Конечно если вы делаете run то это выглядит как новый контейнер, но если использовать docker start всё заработает.
Поправка: я это делал не через fig, напрямую c docker. В fig действительно это не работает и требует перезапуска всех контейнеров.

Может версия у вас старая (хотя у вас тоже 1.4.1)? Или покажите порядок команд которыми запускаете докер.
Я выше показал на примере что при перезапуске контейнера db в связанном с ним webapp меняется ip db в /etc/hosts
Это можно легко проверить и выполнить шаги что описаны в доке. Вот пример asciinema.org/a/15056 Вопрос в том как ваш клиент к БД обрабатывает ситуации смены IP
ECS мне не понравился, очень сыро и опять делают не так как у всех. Хотя docker machine тоже очень сырой.

По ссылке выше:

If you restart the source container, the linked containers /etc/hosts files will be automatically updated with the source container's new IP address, allowing linked communication to continue.
Fig нужен для того что бы описать окружение приложения и связи с другими контейнерами, по сути делает всё то что можно сделать руками, но в более человечком виде. Мне например комфортнее описать один yml файл с необходимыми параметрами чем запускать docker и передавать кучу аргументов.

P.S на 2015 год намечается расширение функционала для управления кластером github.com/docker/docker/issues/9459 + в туже сторону docker swarm & machine.
Я понимаю о какой вы проблеме, но эта проблема устарела и решается стандартными средствами линковки docs.docker.com/userguide/dockerlinks/#container-linking (то что fig и использует), а вот что интереснее, это как линковать контейнеры на разных хостах.
Рекомендую посмотреть в сторону fig и то как у них сделана линковка, а также docs.docker.com/reference/run/#managing-etchosts
1) уточните как «можно автоматизировать через штатную систему инициализации дистрибутива»? Самому это интересно. Да и что за дистрибутивы? Специальные типа CoreOS?

init.d, supervisord, systemd и т.д docs.docker.com/articles/host_integration/
1
23 ...

Information

Rating
Does not participate
Location
Омская обл., Россия
Date of birth
Registered
Activity