Задать вопрос
  • Какова механика работы метода bind?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    bind кэширует текущее значение своего this в момент своего вызова, т.е. он привязывает именно функцию, а не объект, в котором находится функция. Иначе нельзя было бы вызывать bind на просто функции по типу foo.bind(abc). В мануале, кстати, описано что именно она кэширует - там полный список есть: https://developer.mozilla.org/ru/docs/Web/JavaScri...

    Упрощенный пример реализации bind для понимания механизма:
    function binder(that) { 
        let targetFunction = this; // кэш целевой функции
        return function() { targetFunction.call(that) } // В возвращаемой функции используем кэш
    }
    
    let user = {
      name: "Tom",
      intro() {
        console.log("I am " + this.name);
      }
    }
    
    user.intro.binder = binder 
    let f = user.intro.binder(user);
    
    setTimeout(f, 1000);
    
    user.name = "Sid";
    user.intro = function() {
      console.log("Вообще другая функция. name: " + this.name);
    }
    Ответ написан
    1 комментарий
  • Дальнейшие этапы в создании Приложения после создания прототипа?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    1. Дизайнер (человек красиво оформляющий всё нарисованное)

    Дизайнер интерфейсов или дизайнер landing page (если речь про продающую страницу).
    2. Программист (что за программист*).
    * прочитала про бэкэнд разработчиков и … не совсем поняла – это узкая специализация программистов, они прям необходимы или достаточно одного грамотного программера?

    Backend для программирования серверной части приложения, и frontend для фронта/клиента. Fullstack сможет все вместе, но с большей вероятностью - хуже одно/оба из направлений.
    3. Специалист по БД. Это один и тот же человек, что и код пишет?

    Backend без отдельной специализации в проектирование БД, вполне потянет малый/средний проект.
    4. Безопасность. Кто этим занимается, кто прописывает, кто разбирается. Это отдельный человек или навыков программиста достаточно.

    Backend, но! Зависит от того, что Вы понимаете под "безопасностью". Если это безопасность приложения, то либо back, либо front (в зависимости, чья "территория"), если же это сетевая безопасность, то нужен сисадмин.
    Бюджет очень ограничен, поэтому студии однозначно мимо

    Рекомендую оплатить ТЗ от Software Architect, чтобы он расписал, что должен написать back и front.
    - самый-самый минимальный набор специалистов на эти последующие этапы, вплоть до полностью рабочего релиза (т.е. например, дизайнер, программист: ява/питон/С, ???).

    Если рассматривается MVP вариант, то:
    - Сайт/лендинг: WordPress/WooCommerce (PHP, JavaScript).
    - Нестандартное веб-приложение: Back (Python/PHP), Front (JavaScript/TypeScript).
    - Мобильное приложение: Back (Python/PHP), Front (React Native/Flutter).

    Если уходить дальше и предположить, что Ваш MVP начал приносить достаточную прибыль, то я бы рассмотрел переписывание проекта и уход от интерпретируемых ЯП с динамической типизацией в сторону компилируемых ЯП со статической типизацией, например C# + ASP.NET + PostgreSQL.
    Ответ написан
  • Как решить ошибку с mazelib?

    fleshandmolodoy
    @fleshandmolodoy
    Замени generator на generate (https://github.com/john-science/mazelib)
    Должно получиться так:
    from mazelib.generate.Prims import Prims
    Ответ написан
    Комментировать
  • Почему при разном подходе отправки запроса не появляется response в консоли?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    1. await axios.post().then(), точно правильно?
    2. request_json точно в нужном месте axios.post()?

    Если попробовать так?
    try {
        const res = await axios.post(
            'https://jsonplaceholder.typicode.com/posts',
            JSON.stringify(sendData),
            {
                headers: {'Content-Type': 'application/json'}
            }
        );
    
        console.log(res.data);
    
    } catch (error) {
        console.error('Error: ', error);
    }

    onClick на сабмите и без preventDefault, страница перезагрузится и Вы можете не увидеть ответ в консоль.
    Ответ написан
    Комментировать
  • Как правильно читать(видеть) счетчик(рекламную вставку) на сайте? И правильно интерпретировать?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    В чем смысл этой вставки и для чего она нужна?

    Это пример классического трекинга посетителей ресурса, где расположен данный элемент (так же известен как "пиксель").
    img src="URI#1.px.png?r=123123&pr=false&u=URI#2"

    Одно-пиксельное прозрачное изображение с url (utm) параметрами.
    style="position: absolute; bottom: 0px; right: 0px; width: 0px; height: 0px;"

    Расположение пикселя так, чтобы он не мешал посетителям и не ломал верстку сайта.

    Принцип работы:
    1. JS на сайте создает этот пиксель с url хоста аналитики и необходимым url (utm) параметрами.
    2. В момент п1 отправляется запрос на хост аналитики с данными из п1.
    3. В момент п2, хост аналитики видит запрос с определенного сайта, парсит url (utm) параметрами и таким образом собирает стату.
    Ответ написан
    Комментировать
  • Платить или не платить за чужую картинку на своём сайте?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Мнение юриста компании: Оплатить 50 тыс защитникам законности, ибо суд те выиграют и будет еще хуже.

    Юрист передает бумагу на подпись директору, где изложены его рекомендации и план действий относительно настоящего дела, директор подписывает бумагу и оплачивает штраф. Вы либо слушайте юриста, либо увольте его, если он не компетентен.
    Мнение директора: эти деньги списать с того вебмастера, который 10 лет назад эту картинку из интернета опубликовал.

    Рекомендация выше. Юрист говорит, что все получится, проигрывает 1, 2, 3 дело и на выход с вещами. Либо, говорит что ничего не получится, а значит сразу закрываете вопрос.
    Я думаю, что подобный инцидент не повлечёт за собой никакого судебного разбирательства

    Рекомендация выше. Укажите, что возместите расходы, если Ваше предположение окажется ложным.
    Ответ написан
    2 комментария
  • Как запустить сразу несколько процессов с разными прокси?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Несколько вариантов:

    - How-To: 4 Essential Parts of Multiprocessing in Python (не подходит для синхронизации доступа к файлу, который используется часто, так как может привести к снижению производительности):
    from multiprocessing import Lock, Pool
    
    lock = Lock()
    
    with lock:
        driver = uc.Chrome(seleniumwire_options=wire_options, options=options)

    - Multiprocessing Manager Example in Python (подходит только для синхронизации доступа к простым объектам, таким как списки):
    from multiprocessing import Manager, Pool
    
    manager = Manager()
    
    def get_whoer(proxy: str):
        # ...
    
    if __name__ == '__main__':
        """ip:port:login:password"""
        with Pool(processes=2) as p:
            p.map(get_whoer, proxy_list)

    - How Python Keeps Your Queues Thread-Safe (подходит для синхронизации доступа к любым объектам, но код немного сложнее):
    from queue import Queue
    from multiprocessing import Pool
    
    queue = Queue()
    
    def get_whoer(proxy: str):
        # ...
    
    if __name__ == '__main__':
        """ip:port:login:password"""
        proxy_list = list(map(str.rstrip, open('proxy.txt').readlines()))
        for proxy in proxy_list:
            queue.put(proxy)
        with Pool(processes=2) as p:
            p.map(get_whoer, range(len(proxy_list)))
    Ответ написан
    Комментировать
  • Как создать небольшой Интернет Магазин без Woocommerce?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    преподаватель сказал, что нам нельзя использовать Woocommerce, Elementor для создания магазина.

    1. Создать 3 новых типа записей "Товар", "Категория товара" и "Корзина", с необходимыми полями.
    2. Написать php код, который будет добавлять товар в корзину, если кликнули на соответствующую кнопку.
    3. Наполнить тестовыми товарами и протестировать работу своего велосипеда.
    Подскажите, пожалуйста, как можно создать более менее рабочий магазин?

    и прочие функции типичного Интернет магазина.

    Я бы начал с ТЗ, а не реализации, т.к. слово "прочие функции" слишком широко трактуется.
    Не очень понимаю, как возможно реализовать "добавление товара в корзину"

    Пример работы через сессии:
    if (!session_id()) {
        session_start();
    }
    
    function test_session() {
        if (!session_id()) {
            session_start();
        }
    }
    
    add_action('init', 'test_session', 1);

    Функция добавление товара в корзину:
    function add_to_cart($id, $q = 1) {
        if (isset($_SESSION['cart'][$id])) {
            $_SESSION['cart'][$id] += $q;
        } else {
            $_SESSION['cart'][$id] = $q;
        }
    }

    Функция получения товаров из корзины:
    function show_cart() {
        if (!empty($_SESSION['cart'])) {
            foreach($_SESSION['cart'] as $id => $q) {
                $product = get_post($id);
                echo "<div>{$product->post_title} (x$q)</div>";
            }
        } else {
            echo "Cart has empty";
        }
    }
    Ответ написан
    Комментировать
  • Есть ли сервис, который составит план разработки сайта со всеми нюансами?

    @Drno
    Любой сайт фриланса. Там за денюшку Вам составят подробный план и проект)
    Насчет технических моментов - это не Ваша проблема, а реализатора
    Ответ написан
    Комментировать
  • Как сделать выбор случайного свойства объекта?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    2 комментария
  • Как создать hover поверх элемента?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Нужно, чтобы при наведение на любую из кнопку верхний и нижний бордер меняли цвет.

    Ответ написан
    2 комментария
  • Как ограничить возможность скачать видео?

    emekhanikov
    @emekhanikov
    Разработчик и архитектор программного обеспечения
    Можно использовать presigned URLs, есть такая фича, например, у Amazon S3, суть в том что для каждого клиента генерировать свою ссылку у которой будет ограниченное время жизни, еще можно ограничить ссылку по IP для большей надежности.
    Ответ написан
    2 комментария
  • Дробит бекграунд при использовании margin?

    @wervan
    background: linear-gradient(to right, rgb(31, 114, 238), rgb(0, 245, 151)); вот так все будет работать
    Ответ написан
    Комментировать
  • Изменения порта источника в iptables?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Можно,
    iptables -t nat -I POSTROUTING -s 11.22.33.44 -j SNAT --to-source 253.254.255.256:3030
    Ответ написан
    4 комментария
  • Как передать переменную из Js в python(Flask)?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Ajax (fetch):
    async function getValue() {
        const input = document.querySelector('#input-id');
    
        try {
            const res = await fetch('/', {
                method: 'POST',
                headers: {'Content-Type': 'application/json'},
                body: JSON.stringify({'value': input.value})
            });
    
            if (res.ok) {
                console.log('Send success!');
            } else {
                throw new Error(`Send error, ${res.statusText}`);
            }
        } catch (error) {
            console.error('Error', error);
        }
    }

    Принимаем и возвращаем, если все ок:
    from flask import Flask, render_template, request, jsonify
    import json
    
    app = Flask(__name__)
    
    @app.route('/', methods=['GET', 'POST'])
    def index():
        if request.method == 'GET':
            return render_template('index.html')
        elif request.method == 'POST':
            try:
                data = request.json
                if 'value' in data:
                    value = validate(data['value'])
                    return jsonify({'message': 'Success!', 'value': value}), 200
                else:
                    raise KeyError('Value key not found')
            except (KeyError, json.JSONDecodeError) as e:
                return jsonify({'error': 'Invalid data format'}), 400
    
    def validate(value):
        return value
    
    if __name__ == '__main__':
        app.run(debug=True)
    Ответ написан
    Комментировать
  • Как в переменную добавить данные без перезаписи?

    Vindicar
    @Vindicar
    RTFM!
    Ну для начала определись, какой тип данных у твоей переменной?
    Если ты хочешь добавить символ, то переменная должна быть строкой.
    i = "5"  # обрати внимание, кавычки означают строку
    i = i + ' +'
    print(i)  # 5 +
    Ответ написан
    9 комментариев
  • Как связываются таблицы базы данных WordPress?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    Через id:
    - Поле post_author в таблице wp_posts содержит id пользователя, который является автором поста.
    - Поле user_id в таблице wp_usermeta содержит id пользователя, которому принадлежат метаданные.
    - Поле comment_post_ID в таблице wp_comments содержит id поста, к которому относится комментарий.

    Через промежуточные таблицы:
    - Таблица wp_term_relationships связывает записи с категориями и тегами.
    - Таблица wp_postmeta хранит метаданные для записей и других объектов.

    Например, связь между постом и его автором:
    - Поле post_author в таблице wp_posts содержит id пользователя, который является автором поста.
    - id пользователя можно использовать для поиска записи в таблице wp_users, чтобы получить информацию о нем.

    phpmyadmin:
    - Ограничения внешнего ключа отображаются только для связей, реализованных с помощью внешних ключей.
    - Другие связи можно увидеть, используя другие инструменты, например, плагин Adminer.
    Ответ написан
    5 комментариев
  • Как запарсить страницу?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Может ли на hh.ru стоять какая-то защита от парсинга?)

    Самая примитивная, которая чекает заголовки:
    import requests
    from bs4 import BeautifulSoup
    
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
        'Accept-Language': 'en-US,en;q=0.9',
        'Accept-Encoding': 'gzip, deflate',
        'Connection': 'keep-alive',
    }
    
    res = requests.get('https://tomsk.hh.ru/article/31475', headers=headers)
    
    if res.status_code == 200:
        soup = BeautifulSoup(res.text, 'html.parser')
        el = soup.find('div', class_='URS-ratingTable')
    
        if el:
            print(el)
        else:
            print('Table not found!')
    else:
        print('The problem with connecting to the website', {res.status_code})
    Ответ написан
    Комментировать
  • Как получить данные колонки Pandas?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну у тебя не много колонок, а всего одна. Элементы массива (имена колонок) идут через запятую. А все что ты заскринил, это одна строка, как следствие один элемент массива.

    Как пофиксить, ну я не знаю что у тебя там в файле, но предположу что у тебя в файле разделение на колонки происходит сивволом ';'. Как следствие тебе нужно указать параметром при чтении.
    df = df.read_csv(filename, sep=';') Ну и остальные параметры которые ты там указываешь. Решит ли это все проблемы неизвестны. Надо видеть в каком состоянии файл. Чтение файлов иногда может быть серьезной проблемой, которая потребует написания функций для проблемной части парсинга.
    Ответ написан
    1 комментарий
  • Почему при обращении к классу active, ничего не происходит?

    szQocks
    @szQocks
    проблема в том что внутри .program__link , нет элемента с классом .active

    и там ещё опечатка где между классом и after

    .program__link .active ::after

    оставь просто .active::after в css
    Ответ написан
    2 комментария