• Как выровнять пингвина по середине с помощью 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.
  • Меню из страниц приложений и статических страниц?

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

    alsolovyev
    @alsolovyev
    NikitaWeb, если тупорно:
    $('#submit').click(function(){
       if($.trim($('#myInput_uno').val()) == ''){
          alert('Input can not be left blank');
       }
    
       if($.trim($('#myInput_dos').val()) == ''){
          alert('Input can not be left blank');
       }
    
       if($.trim($('#myInput_tres').val()) == ''){
          alert('Input can not be left blank');
       }
    });


    Или нормально через each:
    $( "myInputs" ).each(function(  ) {
      if($( this ).val()) == ''){
          alert('Input can not be left blank');
       }
    });
  • Меню из страниц приложений и статических страниц?

    alsolovyev
    @alsolovyev
    не понимаю, что именно Вам нужно(если статическая страница - зачем ее менять?)

    Создайте модель страницы с настройками:
    1. is_app - boolean переменная
    2. title - заголовок
    3. ....
    class Page(models.Model):
        title = models.CharField(max_length=200, verbose_name=_("title"))
        description = models.CharField(max_length=200, verbose_name=_("title"))
        ............
        is_app = models.BooleanField(default=True, verbose_name=_("is application"))


    is_app - какая-то опция страницы. Добавляйте сколько угодно их(show_sidebar, red_background ....)

    Зарегистрируйте в админке:
    # code to reg. model
    admin.site.register(models.Page, Admin)


    Теперь у Вас в админке есть пункт Pages, который хранит настройки страницы.
    При обращении к определенному rout'у - запрашивайте определенную страницу.

    Я правильно понял конечную цель?

    ps или менее удобный способ: создайте модель Menu(по аналогии). Теперь у Вас в админке можно будет создать несколько видов меню. При рендере запрашивайте нужную и отправляйте ее в шаблон свой.
  • Как перенести текст внтури?

    alsolovyev
    @alsolovyev
    Или просто Вы не знаете банальные вещи? Про float и clear: both.
    И никто не удаляет теги в тексте(будь то WP или Django). Глупости не пешите хоть.
  • Как перенести текст внтури?

    alsolovyev
    @alsolovyev
    Прикольно. А почему br не работает Вас не смущает?
  • Вывести ошибку валидации Express в шаблон HBS?

    alsolovyev
    @alsolovyev
    В чем проблема скинуть Ваш код? Как мне найти ошибку? Клянусь не продавать его третьим лицам!
    Ну не хотите... проверяйте каждую строчку сами(область видимости, объявление всех переменных и тд):
    *dependencies: express, body-parser, express-hbs, express-validator/check

    Вот накидал работающий пример:
    // Dependencies
    const express = require('express');
    const bodyParser = require('body-parser')
    const hbs = require('express-hbs');
    const { check, validationResult } = require('express-validator/check');
    
    // Main Appliction
    const app = express();
    
    // Begin Body Parser Settings
    app.use(bodyParser.urlencoded({ extended: false }))
    app.use(bodyParser.json())
    // end Body Parser Settings
    
    // begin Set Engine
    app.engine('hbs', hbs.express4({
      partialsDir: __dirname + '/'
    }));
    app.set('view engine', 'hbs');
    app.set('views', __dirname + '/');
    // end Set Engine
    
    // Main route
    app.get('/', (req, res) => res.render('index'))
    
    // Login route
    app.post('/user', [
    	// Form Validation
    	check('username').isEmail(),
    	check('password').isLength({ min: 5 })
    	], (req, res) => {
    		// Const with errors
    		const errors = validationResult(req);
    
    		// Show Errors in console
    		console.log(errors.array());
    
    		// Check for error
    		if (!errors.isEmpty()) {
    			// Render template with errors
    			return res.render('index', {
    				errors: errors.array()
    			})
    		} else {
    			// Render template without errors
    			return res.render('index', {
    				success: 'Success'
    			})
    		}
    })
    
    // Listener
    app.listen(3000, () => console.log('Example app listening on port 3000!'))


    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    </head>
    <body>
    	{{# if errors }}
    		{{# each errors }}
    			<p>{{ this.msg }}</p>
    		{{/each}}
    	{{/if}}
    	{{# if success }}
    		<p>{{ success }}</p>
    	{{/if}}
    	<form method="POST" action="/user">
    		<input type="text" name="username">
    		<input type="password" name="password">
    		<input type="submit" value="Submit">
    	</form>
    </body>
    </html>


    5b7989bf3a37d015497406.png
    С ошибками:
    5b798cef55cd9015450508.png
    Без ошибок:
    5b798cf55cb58284155637.png
  • Вывести ошибку валидации Express в шаблон HBS?

    alsolovyev
    @alsolovyev
    const { check, validationResult } = require('express-validator/check');

    Вы добавляете validationResult?
    const errors = validationResult(req);
    Вы объявляете errors?

    Скиньте Ваш роут с валидацией.
  • Программа для раскладывания файлов по папкам согласно их типа?

    alsolovyev
    @alsolovyev
    ну так:
    #!/bin/bash
    cp -r /folder/with/files/*.jpeg /destination/folder
    .... the rest of the code ...

    Сохранить: myOneButtonApplication.sh
    $ chmod +x myOneButtonApplication.sh
    $ ./myOneButtonApplication.sh


    ps к сожалению, не сильно знаком с ПО для сортировки(наверно, только total commander какой-то. На странице список из приложений для mac(Using Total Commander on an Apple Mac?)
  • Как после анимации css скрыть блок от наведения (display:none) так чтобы это было красиво?

    alsolovyev
    @alsolovyev
    Вячеслав Яшников, что? Какая метка?
    The pointer-events CSS property specifies under what circumstances (if any) a particular graphic element can become the target of mouse events.


    https://jsfiddle.net/fqpuc4tg/

    Пока Вы не наведете мышь на метки uno или dos Вы никак не можете взаимодействовать с внутренним блоком. Можно сказать: "его не существует на странице" = display: none

    https://jsfiddle.net/fqpuc4tg/11/

    Что в это примере Вам не так?