• Как с помощью Webpack с CommonsChunkPlugin разделить код по страничным бандлам?

    @Roman_Kh
    Потому что vendor не должен быть в entry, если вы хотите, чтобы он стал единой сборкой общего кода.

    А вообще, лучший туториал по Webpack - https://www.youtube.com/playlist?list=PLDyvV36pndZ... - с разнообразными примерами и подробными пояснениями.
    Смотрите видео с 3.1 по 3.6 - это займет 20 минут, зато все станет понятно.
    Ответ написан
    7 комментариев
  • Как запретить переход с сайтов на мой?

    @Roman_Kh
    с.новым.годом.рф, traffic2cash.xyz и им подобные вообще не заходят на ваш сайт. Они просто прописывают свои псевдовизиты в вашей аналитике.
    Поэтому вам нужно нужно ли настроить фильтры в ваших аналитических отчетах, например, вот так это делается в Google Analtics.
    Ответ написан
    Комментировать
  • Что такое несчетное множество - человеческим языком?

    @Roman_Kh
    Несчетное множество - это бесконечное множество, элементы которого невозможно пронумеровать, не пропустив при этом какие-то другие элементы этого же множества.

    На примере (0,1). Допустим обозначим 0.5 как первое число множества. Но какое будет вторым? 0.51? Но ведь между ними есть, как минимум, одно число - 0.505. Но и его нельзя назвать вторым, потому что между 0.5 и 0.505 тоже есть числа. И так всегда.
    Даже если вам удастся выбрать первое число в попытке составления упорядоченного списка из несчетного множества, то выбрать второе, да такое, что между первым и вторым никаких других элементов нет, уже не удастся (а если вдруг удастся выбрать и второе, то на каком-нибудь последующем вы обязательно споткнетесь).
    Ответ написан
    2 комментария
  • Сколько инстанстов Flask приложения запускает Gunicorn?

    @Roman_Kh
    Количество процессов, запускаемых gunicorn'ом, определяется его параметром workers.

    Однако с помощью "асинхронных" worker'ов (например, gevent) можно условно параллельно обрабатывать несколько запросов даже в одном процессе.
    Тип worker'а задается с помощью параметра worker-class.
    Ответ написан
    3 комментария
  • Как организовать большой single page application?

    @Roman_Kh
    Есть несколько вариантов динамической загрузки модулей.

    Например, можно разместить каждый компонент в отдельном файле, но в конце вместо exports вставлять компонент в глобальный скоуп браузера.
    var SomeComp = React.createClass({
       ...
    })
    
    window.SomeComp = SomeComp

    И затем в другом файле вы легко можете сослаться на этот компонент:
    ...
      render(){
          ...
         <SomeComp ... />
         ...
      }

    Правда, при таком подходе придется вручную реализовать динамическую загрузку скриптов. Впрочем, это не очень сложно, да и есть готовые решения.

    Но лучше всего воспользоваться webpack loaders. Тем более, что они как раз и созданы для вашей задачи.
    Ответ написан
    2 комментария
  • Наполнение объекта javascript в цикле, как сделать элегантно?

    @Roman_Kh
    Чтобы избавиться от "жутких if'ов" и сделать элегатное обновление вам нужно
    1. изменить структуры данных: users и jobs должны стать map'ами по именам пользователей.
    users = {
         'Вася' : {
               'job': 'Слесарь', 
               'phone' : 123345
         },
         'Петя' : {
               'job': 'Слесарь', 
               'phone' : 789901
         }
    }
    
    jobs = {
         'Вася' : { 'job': 'Плотник' },
         'Петя' : { 'job': 'Столяр' }
    }

    2. применить Object.assign (или object-assign)
    И тогда весь ваш цикл превратится в одну строчку
    Object.assign(obj.users, users)
    И обновление работ также уместится на одной строке:
    Object.assign(obj.users, jobs)
    Или можно объединить обе операции:
    Object.assign(obj.users, users, jobs)

    Обратите внимание, что в случае с object-assign будет чуть-чуть иначе:
    obj.users = object_assign(obj.users, users, jobs)
    Ответ написан
    4 комментария
  • Есть ли аналог модуля shelve, который работает как список, а не как словарь?

    @Roman_Kh
    Тут все сильно зависит от того, что именно вы храните в этом списке, поэтому приведу несколько вариантов.

    1. numpy позволяет создавать типизированные массивы и хранит их в памяти, но в весьма компактном виде (объем порой в разы меньше, чем у обычного python'овского списка) и представляет очень богатые возможности по обработке данных.

    2. pandas, используя numpy, умеет создавать структурированные массивы (датафреймы), похожие на таблицы баз данных, и предоставляет развитый функционал по выборке и обработке этих данных.

    3. pytables позволяет сохранить numpy-массивы или pandas-датафреймы на диск в виде файлов в формате HDF5, обеспечивая быстрый доступ к данным и опять же удобный функционал по поиску/выборке данных.
    Скорее всего на ваших объемах данных pandas+HDF5 будет в разы/десятки раз быстрее любой СУБД.

    4. bcolz позволяет сжать данные, а также хранить их не только в памяти, но и на диске.
    При этом операции с данными производится очень быстро, иногда даже быстрее чем с несжатым списками.

    Вообще, спископодобные данные гораздо быстрее обрабатывать с помощью векторных операций в numpy и pandas. Но если вам все-таки нужны именно циклы, то также рекомендую обратить внимание на numba, с помощью которой можно в десятки-сотни раз ускорить python'овские циклы.
    Ответ написан
    Комментировать
  • Как подписать ребенка на событие?

    @Roman_Kh
    Например, вот так
    class Parent {
      ....
      handleChildTick(someData){
          // обработать данные от потомка 
          // (указание на конкретного потомка можно вставить в структуру someData)
      }
      ....
      render(){
          ....
          <Child ... onTick={this.handleChildTick} />
          ....
      }
    }
    
    class Child {
      ....
      someAction(){
          ....
          if(this.props.onTick)
              this.props.onTick(someData)
          ....
      }
    }
    Ответ написан
    Комментировать
  • Почему скрипт срабатывает только после абсолютно полной загрузки страницы?

    @Roman_Kh
    Потому что ваш скрипт завернут в вызов $(window).load, который как раз и предназначен для того, чтобы запустить скрипт только после 100% загрузки страницы.
    Ответ написан
    Комментировать
  • Как сделать random с неравномерным распределением в Python?

    @Roman_Kh
    Сначала определите предельно конкретно, что означает "в начале вероятность выше, чем в конце".
    После чего сможете написать свою функцию распределения. Например, в вашем списке 4 элемента и вероятности распределены так: 60, 25, 12, 3, то есть 60% - для 1-го элемента, 25% - для 2-го и так далее.
    Тогда
    your_data_list = [...]
    probabilities_list=[60, 85, 97, 100]
    rnd = random.uniform(1, 100)
    idx = -1
    idx_found = False
    while idx < len(probabilities_list) and not idx_found:
      idx += 1
      idx_found = rnd <= probabilities_list[idx]
    your_random = your_data_list[idx]

    Однако, это очень медленный способ (и к тому же не лишенный некоторых проблем).

    Можно сделать быстрее и короче с помощью модуля bisect:
    idx = bisect.bisect_right(probabilities_list, rnd)
    Этот вариант будет заметно быстрее (иногда, правда, на 20%, но иногда и в 3.5 раза).

    Но правильнее всего использовать numpy:
    numpy.random.choice(your_data_list, size=N, p=prb_list)

    Это будет раз в 10 быстрее.
    При этом prb_list должен содержать именно вероятности появления каждого элемента, т.е. для вышеприведенного примера [0.6, 0.25, 0.12, 0.03]
    Ответ написан
    1 комментарий
  • Округление float чисел?

    @Roman_Kh
    Конкретные операторы и функции сильно зависит от используемого вами языка программирования, но в целом алгоритм такой:
    1. Сначала округляете число до нужного вам количества знаков.
    2. Затем преобразуете его в строку
    3. После чего удаляете все нули с конца строки, если они есть.
    Во многих языках вам вообще ничего не надо делать, потому что их стандартные функции и так удалят все ненужное.
    Ответ написан
    Комментировать
  • Могут ли сторы хранить компоненты?

    @Roman_Kh
    Поскольку компонент - это объект JavaScript, то чисто технически его можно сохранить в store (стор).
    Но не стоит этого делать, поскольку компоненты React имеют вполне конкретный жизненный цикл, в который не входит состояние "компонент без дела валяется в сторе". Компоненты без проблем можно создавать и удалять "на лету", когда в этом возникает потребность.
    При желании в сторе можно хранить какие-нибудь данные, необходимые для создания ваших компонентов.
    Ответ написан
  • Как выбрать конкретный элемент (React Native)?

    @Roman_Kh
    Видимо, вам нужен bind:
    handlePress(photoNo){
        // do something with photo number photoNo
        ....
    }
    ....
    render(){
        ....
        <TouchableHighlight onPress={this.handlePress.bind(this, photoNo)}>
          <Image style={...} source={...} />
        </TouchableHighlight>
        ....
    }
    Ответ написан
    Комментировать
  • React и Flux: как получить данные при загрузке страницы?

    @Roman_Kh
    По идее, ваш компонент понятия не имеет, нужно или нет загружать данные с сервера. Об этом знает только store. Поэтому компонент должен лишь запрашивать данные у store, но при этом уметь понимать, что в ответ получены именно данные и тогда отрисовывать обычный контент, или что в ответ получена информация о том, что данные загружаются с сервера и тогда отрисовывать другой контент (например, с иконкой и сообщением о загрузке).
    Примерно так:
    class SomeComponent {
      ...
      componentDidMount() {
          Store.addListener("DATA_CHANGED", this.handleChanged)
          Store.addListener("DATA_LOADED", this.handleLoaded)
      }
      ...
      handleLoaded(){
         // just force rendering (you can do something smart beforehand though)
          this.forceUpdate()
      }
    
      ...
      renderContent(){
          // your usual render code
          ...
      }
    
      renderLoading(){
          return <Icon type="spinner" spin />
      }
    
      render(){
          if(Store.isLoading()){
              return this.renderLoading()
          } else {
              return this.renderContent()
          }
      }
    }
    Ответ написан
    Комментировать
  • Архитектура: коммуникация child-to-parent и хранение состояния?

    @Roman_Kh
    1. Лучше всего написать правильный универсальный store, который будет накапливать информацию о бизнес-логике, а не о состоянии компонент (которое лучше хранить в state).
    Тут придется как следует подумать, зато и результат будет удобнее и функционально богаче.

    2. Но можно и просто по цепочке спустить в потомков ссылку на функцию предка, которая будет реагировать на изменение состояния потомков.
    class RootComponent {
      ....
      collectData(someData){
          // обработать данные от потомка 
          // (указание на конкретного потомка можно вставить в структуру someData)
      }
      ....
      render(){
          ....
          <ColBootstrap ... onStateChange={this.collectData} />
          ....
      }
    }
    
    class ColBootstrap {
      ....
      render(){
          ....
          <ClientageBlock... onStateChange={this.props.onStateChange} />
          ....
      }
    }
    
    class ClientageBlock {
      ....
      someAction(){
          ....
          if(this.props.onStateChange)
              this.props.onStateChange(someData)
          ....
      }
    }

    Этот вариант обычно быстрее в реализации, но он хуже с точки зрения универсальности, дальнейшего развития и поддержки.
    Ответ написан
    Комментировать