• Строковый format и KeyError?

    netpastor
    @netpastor
    Python developer
    user_ids = ",".join(map(str, (random.randint(1, 1000000) for _ in range(1000))))
    code = f'return API.users.get({{"user_ids": {user_ids}, "fields": "bdate"}});'
    print(code)
    Ответ написан
    Комментировать
  • Строковый format и KeyError?

    longclaps
    @longclaps
    Конструкция '''{"user_ids": {}, "fields": "bdate"}''' воспринимается как сложный формат, требующий двух параметров, да ещё именованых (да-да, вложеные скобки и двоеточия - это засада).
    Выкрутитесь как-нибудь, способов много.
    Ответ написан
    1 комментарий
  • Как организовать периодические задания в многопользовательском приложении?

    tumbler
    @tumbler Куратор тега Django
    бекенд-разработчик на python
    Декораторы работают в момент импорта, расписание по пользователям лучше в БД хранить:

    https://django-celery-beat.readthedocs.io/en/latest/
    Ответ написан
    1 комментарий
  • Откуда в args декоратора класс?

    @lyrjie
    В декорируемом вызове
    def get(self, params):
    self-- аргумент, инстанс класса VK

    Это компенсируется строкой
    _, params = args
    где инстанс класса присваивается переменной _и больше не используется, а переданные методу параметры присваиваются переменной params
    Ответ написан
    Комментировать
  • Достает ли django-allauth токен для работы с API ВКонтакте?

    @IvanOne
    есть еще нюансы с авторизацией, например некоторые функции недоступны в api вконтакте если например выбран тип авторизации Authorization code flow
    Ответ написан
    Комментировать
  • Почему именно так деплоится react-express-heroku приложение?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Heroku
    Седой и строгий
    Очевидно, что postbuild и start - разные этапы жизненного цикла. Этап postbuild выполняется один раз при деплое, а start может выполняться множество раз при перезапусках, миграциях, масштабировании и прочем.
    Ответ написан
    Комментировать
  • Как dispatch оказался в props?

    polarlord
    @polarlord
    Потому что в данном примере в connect() не передается mapDispatchToProps() а по-умолчанию его значение это dispatch => ({ dispatch })
    Больше можно почитать в офф. доке https://react-redux.js.org/docs/api#arguments или здесь https://stackoverflow.com/questions/34458261/how-t...
    Ответ написан
    Комментировать
  • Первоначальная отрисовка в react?

    @SeaBreeze876
    Front-end разработчик
    вот так https://codepen.io/anon/pen/KrMXPW
    не знаю сколько анонимные пэны живут
    Ответ написан
    Комментировать
  • Возврат переменной из axios.get?

    @kristenstewartdadada
    Frontend Developer
    Код выполняется не в том порядке в котором вы его ожидаете.

    var IP = 'IP еще не определен'
    
    class App extends React.Component {
      constructor(props) {
        super(props)
            
        this.getMyIP = this.getMyIP.bind(this)
        this.handleClick = this.handleClick.bind(this)
      }
      
      async getMyIP() {    
        console.log('1. Вошли в функцию getMyIP()')
        const response = await axios.get('https://httpbin.org/get')
        console.log('2. Обрабатываем результаты запроса')
        IP = response.data.origin
        console.log('3. Возвращаем значение')
        return IP
      }
      
      async handleClick(e) {
        let ip = await this.getMyIP()
        console.log('4. IP определен:', ip)
      }
      
      render() {
    
        return (
          <div>
            <input type='button' value='click' onClick={this.handleClick}/>
          </div>
        )
      }
    }
    
    ReactDOM.render(
      <App />,
      document.getElementById('root')
    );
    Ответ написан
    1 комментарий
  • Возврат переменной из axios.get?

    0xD34F
    @0xD34F Куратор тега React
    getMyIP() {    
      return axios.get('https://httpbin.org/get').then(response => response.data.origin)
    }
      
    handleClick() {
      this.getMyIP().then(ip => console.log(`ip: ${ip}`))
    }
    Ответ написан
    Комментировать
  • Что такое Redux простыми словами?

    Лучшее объяснение Redux что я видел.
    getinstance.info/articles/react/learning-react-redux
    ba494148d28e422b4c7bd269de5bed09.png
    Ответ написан
    Комментировать
  • Как отрендерить JSON в React.js?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Всегда когда вам приходит какая-то структура, нужно пробегать ее полностью по каждому элементу, чтобы сгенерировать JSX-элемент. Для массивов обычно используют .map метод, для объектов - например Object.keys (так же подойдут конечно, и цикл forEach для массива, и цикл for in для объекта и т.д.)

    Так как у вас в JSON приходит не массив объектов, а объект объектов то вам нужно пробегать с помощью Object.keys, например, и потом еще применить map к получившемуся массиву ключей. Пример получившегося массива:

    6b13d2ad4f6241f4bb3c378385646082.jpg

    Применяем map:

    const template = Object.keys(data.books).map(item => <span key={data.books[item].id}>{data.books[item].author} - {data.books[item].name}</span>)


    В данном случае в переменной template окажутся 2 JSX-элемента (тэги span с данными). Вам скорее всего нужно, чтобы это было tr. Поменять не трудно)

    А json-loader вам нужен для того, чтобы webpack мог корректно импортировать такие файлы, так как пока json-лоадера нет, вебпак не знает как обрабатывать файлы с расширением .json. По такому же принципу вы подключаете css-loader, например, чтобы webpack мог "импортить цсски"
    Ответ написан
    1 комментарий
  • Запись строк только в конец файла?

    BlackLacost
    @BlackLacost
    Если вы хотели между первой и второй линей вставить третью, а получившиеся третей и второй четвертую, то это можно сделать так:

    with open('tmp', 'w') as file:
        file.write('line 1\n')
    
    with open('tmp', 'a') as file:
        file.write('line 2\n')
    
    with open('tmp', 'r+') as fd:
        contents = fd.readlines()
        contents.insert(1, 'line 3\n')
        fd.seek(0)
        fd.writelines(contents)
        
    with open('tmp', 'r+') as fd:
        contents = fd.readlines()
        contents.insert(2, 'line 4\n')
        fd.seek(0)
        fd.writelines(contents)
        
    with open('tmp') as f:
        for line in f:
            print(line, end="")

    line 1
    line 3
    line 4
    line 2
    Ответ написан
    1 комментарий
  • Что означает синтаксис "cls: 'BasePlugin'"?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Это Type Hints. Читать как "Присвоить переменной cls типа BasePlugin результат вызова метода __new__ суперкласса".
    Ответ написан
    1 комментарий
  • Что такое Redux простыми словами?

    @KnightForce
    Чтобы понять как работает Redux тебе нужно норм вкуривать React.
    Хотя бы для того, чтобы не пугаться props.

    Есть у тебя React. Это все просто JS объекты.
    <Component /> - так позволяет писать движок jsx, который и React его использует.
    Так как структура компонентная, ты должен думать как обновить компоненты в в другой части страницы.

    Принцип такой: компонент обычно обновляется при получении новых свойств - props или когда меняется его объект состояния - state.

    Чтобы тебе обновить дальние друг от друга компоненты- тебе нужно продумать какие и где приходят свойства - чтобы пробросить функцию, которая вызовет перерисовку.

    Что делает Redux:
    Он не призывает отказываться от state.

    Но есть общий контейнер данных. И когда данные меняются - меняются и компоненты, которые отображают именно эти данные.

    Когда нужно что-то поменять - вызываешь dispatch - специальная функция reducer реагирует на это - и меняет данные как тебе нужно. Когда данные заменятся - компонент Propvider - вызывает рендер у своего дочернего компонента (тот что оборачивает Provider).
    Например:
    <Provider>
       <MyComponent />//Вот сюда Provider пробросит (запишет) новые props.
    </Provider>


    Записывает он это самое глобальное хранилище и все компоненты, для которых поменялись данные - перерисуются.

    mapStateToProps - указывает какую часть этого глобального хранилища будет предоставлять provider.
    Если у тебя оно такое:
    {
       chunkStore: {},
       some: {}
    }

    То если mapStateToProps вернет{store: store.chunkStore}то Provider в props своего потомка пробросит такое: store: store.chunkStore. И ты будешь обращаться внутри к store, но там будет только часть chunkStore (не весь объект, а его поле).

    mapDispatchToProps - т.к. subscribe нет, то это возвращает функции, которые могут внутри себя вызывать dispatch().

    action - описывает то что и на что ты хочешь поменять. Какое поле и какие данные туда поместить.
    Ответ написан
    Комментировать
  • Как из ситуации start получить ситуацию end?

    dlnsk
    @dlnsk
    ПК Партнер 01.01 -> ПК Поиск -> IBM PC
    Варианты есть. Я придумал вот такой, довольно экстравагантный:
    $ git checkout F1
    $ git reset --hard HEAD^ (первые две команды можно заменить на git checkout -B F1 C3)
    $ git commit –am “C10”
    $ git checkout F3
    $ git rebase F1
    $ git cherry-pick C4
    $ git checkout -B F1 C4

    И все ветки будут на своих местах.
    Скажете, что я на втором шаге удалил C4... ну да, удалил! ;) Только это ничего не меняет, все будет работать.
    Просто нужно помнить что удаляя коммиты и двигая ветки вы в реальности ничего не удаляете (если, конечно, не запустите сборку мусора). Т.е. мы, например, легко можем восстановить утерянные коммиты C8 и C9 если выполним
    $ git checkout -b test C9
    Ну а если вы уже забыли что именно удалили, то git reflog вам в помощь.
    Ответ написан
    Комментировать
  • Для чего нужен магический метод __reduce__?

    @deliro
    Коротко — он возвращает текущее состояние объекта, чтобы можно было создать вот прям точно такой же, например, с помощью copy.copy. Или сериализовать его в байты (pickle), а потом достать оттуда, чтобы получился объект, не хуже того, который ты сериализовал.
    Ответ написан
    Комментировать
  • В чем заключается худший случай для хеш-таблиц?

    GavriKos
    @GavriKos
    Вам пример? Это когда у всех элементов хеш совпадает - невозможно найти нужный элемент только по хешу и приходится искать вручную. Т.е. таблица грубо говоря становится обычным массивом.
    Ответ написан
    Комментировать
  • В чем заключается худший случай для хеш-таблиц?

    @Teslaman
    При коллизиях (совпадении хэша) элементы обычно складывают в связный список. В поиске по этому связному списку и кроется O(n).
    Ответ написан
    Комментировать
  • True, False, None - это singlton-объекты?

    Да
    Ответ написан
    Комментировать