Задать вопрос
  • Значение 0 по дефолту в input?

    alsolovyev
    @alsolovyev
    Evgeny57, теперь Ваш html код выглядит так:
    <input type="text"
      class="form-control text-center"
      name="80-120"
      value="0"
      data-rule="quantity"
      data-max="1000"
      data-min="0"
      data-step="1">

    И, о чудо! Работает! Видимо Вы "Все так и сделал" не сделали...
    Но благодарит за помощь не надо(как и 23 вопроса до этого). Это сам форум должен выразить благодарность Вам, что дали нам возможность потратить личное время и помочь Вам! Спасибо!

    Жалко Вас.
  • Значение 0 по дефолту в input?

    alsolovyev
    @alsolovyev
    Evgeny57, давайте подумаем... у всех работает, а у Вас нет. Хм... В чем может быть проблема?

    Вот Ваш html
    <input
      type="text"
      class="form-control text-center"
      name="colvo"
      value="0"
      data-rule="quantity">


    Вот Ваш JS(query.spinner)
    ....
      Spinning.rules = {
        defaults: { min: null, max: null, step: 1, precision: 0 },
        currency: { min: 0.00, max: null, step: 0.01, precision: 2 },
        quantity: { min: 1, max: 999, step: 1, precision: 0 },
        percent:  { min: 1, max: 100, step: 1, precision: 0 },
        month:    { min: 1, max: 12, step: 1, precision: 0 },
        day:      { min: 1, max: 31, step: 1, precision: 0 },
        hour:     { min: 0, max: 23, step: 1, precision: 0 },
        minute:   { min: 1, max: 59, step: 1, precision: 0 },
        second:   { min: 1, max: 59, step: 1, precision: 0 }
      };
      ....


    Беглым взглядом я не нашел больше упоминаний сего плагина у Вас в коде. Найдете "5 отличий" или показать?

    ps раз уж пишите учебный проект, то почему бы не написать самому похожий функционал? Ничего сложного нет. Нужны только базовые знания js(event onchange, innerText, getelements) и чуть-чуть желания
  • Возможно ли на клиенте прочитать текстовый файл?

    alsolovyev
    @alsolovyev
    Вы же понимаете, что никто не может знать, что Вы там пытаетесь прочесть(какой формат, кодировку и тд)?
    https://codepen.io/matt-west/full/KjEHg
    5be04ca17f9f1468224849.png
    Сей API прекрасно работает. Ищите ошибку на своей стороне.

    Используйте FileReader.readAsBinaryString(). Любой файл прочитает...
  • Как сделать соотношение сторон для блока?

    alsolovyev
    @alsolovyev
    Артём, работает? Странно... На самом деле, если у картинки будет соотношение сторон больше 1(ширина картинки меньше высоты), то код не будет работать корректно. Надо добавить еще 1 условие:
    if (aspect < 1) {
      // landscape format
    } else {
       // portrait format
    }

    И к портретному добавить по аналогии с первым(только знак поменять в формуле)

    ps ну и вынести все в функцию, а то дублировать код как-то буэээ
    psps и у Вас в примере можно if if заменить на if else
  • Как сделать более плавную анимацию?

    alsolovyev
    @alsolovyev
    1. Бессмысленно
    2. Бесконтрольно
    3. Бесплавно(не знаю как с бес назвать)
    4. ... тут еще пара тройка бес пунктов...


    Не знаю как ответить Вам.... Вы можете хоть height анимировать, который как и border вызовет перерасчет DOM link
    В общем. не надо анимировать бордер. Старайтесь использовать: opacity, transform, которые дадут Вам больше контроля и производительность.
  • Как сделать соотношение сторон для блока?

    alsolovyev
    @alsolovyev
    Если размеры контейнеров будут всегда одинаковы, то упрощаем логику
    jsfiddle.net/x98peaqy/6

    Логику можно посмотреть в исходниках https://github.com/bfred-it/object-fit-images

    ps ну и теперь можно любую(любое соотношение) картинку туда пихать jsfiddle.net/x98peaqy/7
  • Как сделать соотношение сторон для блока?

    alsolovyev
    @alsolovyev
    Хм... эт уже дополнительное условие... наверно, только через JS тогда. По крайней мере. других идей пока нет в голове...

    update: на css такую задачу решить нельзя. Так как у вас может быть два варианта:
    1. Высота > ширины
    2. Ширина > высоты

    для каждого будет своя формула расчета, а для чистого css еще не придумали условные операторы. Ответ выше работает, если только нужно выполнить 1 условие. Остается только JS
  • Как выровнять пингвина по середине с помощью Python?

    alsolovyev
    @alsolovyev
    Dmitry, ну. если проблему решили, а задача программиста именно в этом, то Ваш способ имеет место быть(хотя и не самый элегантный...)
  • Как выровнять пингвина по середине с помощью Python?

    alsolovyev
    @alsolovyev
    Dmitry, Вы забыли добавить перенос строки в конце:
    pinguin = '   _~_\n  (o o)\n  / V \\\n /( _ )\\\n  ˄˄ ˄˄\n'
    print(pinguin * 3)

    отчего после первого "пингвина" символы " ˄˄ ˄˄" и " _~_" оказались на одной строке.

    1. Ваш пингвин же не по центру?
    2. Код не универсален.

    Почему код выше не проходил? Несколько в ряд:
    import os
    
    amount = 3
    strings = [ '_~_ ', '(o o)', '/ V \\', '/( _ )\\', '˄˄ ˄˄', ]
    rows, columns = os.popen('stty size', 'r').read().split()
    
    for x in range(amount):
      for string in strings:
        padding = int(columns) - int(len(string) / 2)
        print(string.center(padding))


    5bd969e84d076717171721.png
  • Как выбрать автозагрузку линукс при наличиии двух ОС?

    alsolovyev
    @alsolovyev
    Диски разные? Мб у Вас grub("выбор между двумя ОС") установлен на один диск, а систему грузится с другого. Зайдите в настройки bios => boot => поставить первым диск с grub
  • Как выровнять пингвина по середине с помощью Python?

    alsolovyev
    @alsolovyev
    Dmitry, именно. Это стандартный модуль для работы с OS(запись, чтение, удаление и тд). Его не надо устанавливать отдельно. Идет в комплекте с python.
    Docs
    Ru Link
  • Как выровнять пингвина по середине с помощью Python?

    alsolovyev
    @alsolovyev
    Dmitry, вродь, код простой. Поэтому не писал комментарии с пояснениями, но если будут какие-то вопросы - пишите.
  • Как зайти в Линукс?

    alsolovyev
    @alsolovyev
    Максим Ленский, такой возможности нет.
    Если хотите попробовать, то есть 3 варианта:
    1. Запустить live(в Ubuntu она изначально есть)
    2. Установить виртуальную машину(virtual box)
    3. Установить рядом c Windows

    Просто потыкать хватит и live версии

    ps то что Вы видели, скорее всего, virtual box
  • Как зайти в Линукс?

    alsolovyev
    @alsolovyev
    Из window store описание:
    Ubuntu on Windows allows one to use Ubuntu Terminal and run Ubuntu command line utilities including bash, ssh, git, apt and many more.

    как Вы хотите GUI запустить из терминала? Или я неправильно понял Вас.
  • Точный аналог setTimeout. Как вызвать выполнение функции через точный промежуток времени?

    alsolovyev
    @alsolovyev
    В чем проблема?
    const timeToStop = 150; // time in ms
    function loop(t) { // t - current time for when requestAnimationFrame starts to fire callbacks
      // window.console.log(Math.floor(t/10)); // log current step(only ms)
      if (t > timeToStop) {
        covervideo.pause(); // your fn
        return; // exit loop
      }
      window.requestAnimationFrame(loop);
    };
    loop();
  • Правильная взаимосвязь между компонентами?

    alsolovyev
    @alsolovyev
    Во всяком случае, я попытался... :) Надеюсь у Вас получится найти удачное решение проблемы, которую я так и не понял))!
  • Правильная взаимосвязь между компонентами?

    alsolovyev
    @alsolovyev
    Хм... сорри... теперь понял Вашу проблему:

    Создадим свое событие, которое будем слушать у родителя.
    Для этого в компоненте CustomInputField у Вас есть v-model="value"
    Вешаете событие v-on:change="inputUpdate" на поле input
    <template>
      <div class="input">
        <input v-model="value" v-on:change="inputUpdate">
      </div>
    </template>

    Добавим метод inputUpdate:
    methods: {
      inputUpdate() {
        this.$emit('inputUpdate', this.value);
      },
    },

    Теперь у "родителя" слушаем inputUpdate:
    <template>
      <div id="block">
        <custom-input-field @inputUpdate="(data) => { fieldUno = data }"/>
        <custom-input-field @inputUpdate="(data) => { fieldDos = data }"/>
        <custom-input-field @inputUpdate="(data) => { fieldTres = data }"/>
      </div>
    </template>

    где fieldUno, fieldDos, fieldTres это данные компонента родителя:
    data() {
      return {
        fieldUno: '',
        fieldDos: '',
        fieldTres: '',
      };
    },
  • Как спарсить html страницы?

    alsolovyev
    @alsolovyev
    Чего? Вы же написали:
    во вкладке sources сохранить эту страницу в виде 71680.html и открыть локально, то будет доступна вся информация.

    Значит она хранится на сайте. Значит есть метод, который ее скрывает или который будет ее показывать(добавляет какой-то класс со стилями)

    Так или иначе, если нужная информация есть на сайте(вы сами написали, что она доступна, если скачать файл), то простой BeautifulSoup сможет ее достать:
    from bs4 import BeautifulSoup
    
    response = requests.get(url) # auth logic and etc
    html = response.text
    soup = BeautifulSoup(html, 'lxml')
    data = soup.find_all('div', id='some-id') # tag with information
    print(data)


    Как видно из примера/ BeautifulSoup скачивает точно такой же html(71680.html) документ как и Вы. И парсит именно текстовой документ. По аналогии работает selenium и любой другой парсер. Надо только добавить логику авторизации и переход по ссылкам
  • Правильная взаимосвязь между компонентами?

    alsolovyev
    @alsolovyev
    Оч много букв, которые бестолковые
    spoiler
    Вообще не понял(мб я туплю)...
    Пусть будет структура проект:

    Main Component:
    --Component A
    ----Component Aa
    ------Component AaN
    ----Component Ab
    ----Component Ac
    --Component B

    Добавим хранилище:
    const store = new Vuex.Store({
      modules: {
        forms: Forms,
      },
    });

    Добавим модуль Forms
    const Forms = {
      state: {
        // лучше объект 1 создать или массив и туда сунуть все формы
        formUno: {
          name: 'Some name',
          suname: 'some surname',
        },
        formDos: {
          email: 'example@mail.ru'
        },
      },
      getters: {
        getFormUno: state => state.formUno,
        getFormDos: state => state.formDos,
      },
      mutations: {
        setFormUno(state, formData) {
          state.formUno = formData;
        },
        setFormUnoName(state, name) {
          state.formUno.name = name;
        },
        setFormDos(state, formData) {
          state.formDos = formData;
        },
      },
    };


    В компоненте Component Aa сохраняем только имя:
    this.$store.commit('setFormUnoName', inputValue);
    В компоненте Component AaN получим имя поменяем его и сохраним его обратно:
    computed: {
      ...mapGetters({
        formUnoData: 'getFormUno', 
      }),
    },
    
    
    this.$store.commit('setFormUnoName', this.formUnoData.name.toUpperCase());

    В компоненте Component Ab сохраняем форму formDos:
    this.$store.commit('setFormDos', dataObj);

    Так же получаем нужные нам данные в любом компоненте:
    computed: {
      ...mapGetters({
        formUnoData: 'getFormUno', 
        formDosData: 'getFormDos', 
      }),
    },
    // const formUno = this.formUnoData;
    // const formDos = this.formDosData;
    // <div>{{formUnoData}}</div>
    // <div>{{formDosData}}</div>


    Какие коллизии могу тут быть? Вы четко сохраняете данные куда Вам нужно(можно сравнить так:
    const formDos = dataObj;
    // same shit
    this.$store.commit('setFormDos', dataObj);

    ). И так же получаете откуда Вам нужно.
    Если нужен еще какой-то параметр, то создаете еще какой-то state с сеттером и геттером:
    state: {
      .....
      anotherState: ''
    }


    Что имеем на выходе: нам все равно какая структура проекта. Мы имеем доступ к сеттерам и геттерам в каждом компоненте. У нас нет путаницы с данными(1 геттер = 1 данные). Мы можем легко расширяться и нам не надо будет для этого менять в каждой компоненте код. Всего лишь добавить новый state.