• Как передать переменную из Flask в JavaScript?

    @iddqda
    network engineer, netdevops
    Вот так примерно

    html:
    <div>
        <button id="jsfetch">fetch json</button>
      </div>

    js:
    document.querySelector("#jsfetch").addEventListener("click", Handler);
    function Handler(event) {
        fetch('/api')
            .then((response) => {
                return response.json();
            })
            .then((myjson) => {
                console.log(myjson);
            });
    }


    flask:
    from flask import jsonify
    data = { 
        "id": 123,
        "name": "Вася",
        "surname": "Пупкин"
    }
    
    @app.route('/api')
    def api():
        return jsonify(data)


    Запускаешь, нажимаешь на кнопку и видишь в консоли браузера:
    Object { id: 123, name: "Вася", surname: "Пупкин" }
    Ответ написан
    Комментировать
  • Как сделать такой функционал кнопок Telebot python?

    Vindicar
    @Vindicar
    RTFM!
    Отредактируй сообщение, при редактировании отправь новую разметку для кнопок?
    Ответ написан
    Комментировать
  • Как скачать сайт полностью на компьютер?

    @lirostin
    Чтобы скачать сайт целиком с помощью wget нужно выполнить команду:
    wget -r -k -l 7 -p -E -nc http://site.com/

    -r — указывает на то, что нужно рекурсивно переходить по ссылкам на сайте, чтобы скачивать страницы.
    -k — используется для того, чтобы wget преобразовал все ссылки в скаченных файлах таким образом, чтобы по ним можно было переходить на локальном компьютере (в автономном режиме).
    -p — указывает на то, что нужно загрузить все файлы, которые требуются для отображения страниц (изображения, css и т.д.).
    -l — определяет максимальную глубину вложенности страниц, которые wget должен скачать (по умолчанию значение равно 5, в примере мы установили 7). В большинстве случаев сайты имеют страницы с большой степенью вложенности и wget может просто «закопаться», скачивая новые страницы. Чтобы этого не произошло можно использовать параметр -l.
    -E — добавлять к загруженным файлам расширение .html.
    -nc — при использовании данного параметра существующие файлы не будут перезаписаны. Это удобно, когда нужно продолжить загрузку сайта, прерванную в предыдущий раз.
    Ответ написан
    Комментировать
  • Как проверить определена ли переменная в js?

    miraage
    @miraage
    Старый прогер
    // Проверяют так
    if (typeof variable !== 'undefined') {
        // code
    }
    
    // Можно и так, ибо все глобалы лежат в window
    if (window.variable !== void 0) {
        // code
    }
    Ответ написан
    Комментировать
  • DELETE FROM list WHERE id = 'id строки в списке дел'. Как мне указать этот id?

    Поиграем в злого и доброго комментатора, я буду добрым :) У вас ссылка неправильно формируется - с кавычками намудрили. Вы посмотрите какая ссылка формируется на самом деле. В параметр notesDelete передаётся строка ' . $row['id'] . ' вместо значения $row['id']
    Ответ написан
    Комментировать
  • DELETE FROM list WHERE id = 'id строки в списке дел'. Как мне указать этот id?

    @alexalexes
    1. Подготовить текст запроса prepare-функцией.
    2. Присобачить нужные параметры запроса bind-функцией.
    3. Выполнить запрос execute-функцией.
    Запрос не выполняется? Посмотреть ошибки.
    PS: В любой непонятной ситуации читай документацию.
    Ответ написан
    Комментировать
  • Как остановить работу программы Python?

    @artem_sib
    sys.exit()
    Ответ написан
    Комментировать
  • Как остановить работу программы Python?

    @xDimus
    Если программа в терминале под windows можно выйти по нажатию определенной или любой клавиши
    import msvcrt, sys
    while True: 
    	#тут что то делаем
    	if msvcrt.kbhit(): #если нажата клавища
    		k = ord(msvcrt.getch()) #считываем код клавиши
    		if k == 27: # если клавиша Esc
    			sys.exit() # завершаем программу
    Ответ написан
    Комментировать
  • Как раскодировать ссылку?

    В консоли браузера функция atob
    atob("aHR0cDovL3J1dHJhY2tlci5vcmcvZm9ydW0vdmlld3RvcGljLnBocD90PTUzMTcwMzY")

    выдаёт http://rutracker.org/forum/viewtopic.php?t=5317036
    Ответ написан
    Комментировать
  • Странный javascript в коде? что это?

    sedoyjan
    @sedoyjan
    фронт-енд разработчик
    Это мониторинг ошибок https://newrelic.com/
    Ответ написан
    Комментировать
  • Как в JavaFX создать поток который будет добавлять Label, пока не нажать кнопку Stop?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    JavaFX, как и многие другие gui-библиотеки, однопоточна. При создании окна создаётся Event Dispatch Thread, внутри которого будет работать цикл событий и обработчики событий. Вы не должны пытаться из главного потока или любого другого потока взаимодействовать с элементами графического интерфейса - это приведёт к сбою. Вы не должны внутри обработчиков событий запускать потоки - это приведёт к сбою. Если вам надо из другого потока изменить, например, текст метки, то придётся создать задание для EDT:
    Platform.runLater((() -> someLabel.setText("Hello"));

    Если вам нужно внутри обработчика нажатия на кнопку запустить на выполнение длительную задачу, придётся использовать Task и Service:
    public class Example extends Application {
        ...
    
        btn.setOnAction(act -> {
            Service<Void> service = new Service<Void>() {
                @Override
                protected Task<Void> createTask() {
                    return new Task<Void>() {
                        @Override
                        protected Void call() throws Exception {
                            // Долгий код
                            return null;
                        }
                    };
                }
            };
            service.start();
        });
    }

    Примечание
    На самом деле поток обработки событий в JavaFX называется JavaFX Application Thread, но это непринципиально.
    Ответ написан
    3 комментария
  • Может ли статический метод вызывать не статический?

    @nirvimel
    Нестатические методы - методы экземпляра класса.
    Статические методы - методы самого класса.
    Статический метод, не имея в распоряжении экземпляра класса, не может вызывать нестатический метод непонятно кого.
    Имея экземпляр класса (m1 в примере) можно пользоваться его нестатическими методами откуда угодно.
    Ответ написан
    Комментировать
  • Удаление первых двух цифр после точки?

    Maksim_64
    @Maksim_64
    Data Analyst
    Если тип данных у 0.00009011 str, проблем нет вообще.
    s = '0.00009011'
    first, second = s.split('.')
    result = first + '.' + second[2:-2]
    print(result)

    Если же данные поступают в формате flaot нас ждет проблема, если мы конвертируем float в str мы получим str в научном виде неудобном для парсинга, если же мы будем использовать чистый python для выведения float в научном виде нам нужно зафиксировать количество символов сколько мы будем форматировать псевдо код будет такой
    float_number = 0.0000550034
    print(f"{float_number:.nf}")

    но n для каждого поступления нового числа свое и мы не сможем удалять первые и последние две цифры.
    в библиотеке numpy есть решение данной проблемы
    import numpy as np
    number = 0.00009011
    first, second = str(np.format_float_positional(number,trim='-')).split('.')
    result = first + '.' + second[2:-2]
    print(result)
    здесь в отличии от первого случая тип наших float но проблема все равно решается.
    Ответ написан
    3 комментария
  • Как сделать запрос api SHA256 Binance?

    twobomb
    @twobomb
    Ну там же сказано

    API-keys are passed into the Rest API via the X-MBX-APIKEY header.

    Тоесть через заголовок X-MBX-APIKEY нужно передавать апи ключ
    Даже пример курла дан
    curl -H "X-MBX-APIKEY: vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A" -X POST 'https://api.binance.com/api/v3/order?symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559&signature=c8db56825ae71d6d79447849e617115f4a920fa2acdcab2b053c4b2838bd6b71'
    Ответ написан
    Комментировать
  • Как правильно обновлять Progressbar из цикла?

    zorgrhrd
    @zorgrhrd Автор вопроса
    Прошу прощения, два дня бился головой о стену в попытке понять, почему оно не работает, оказывается искал не в том месте, дело в том что буфер сначала накапливался, а потом уже после того как поток закрылся, разом отдавал вывод в цикл и прогрессбар молниеносно набирал 100%. Т.е. с обновлением бара проблем нет, дело было в самом буфере, переписал метод:

    private void runCmdWithProgress(String... args) throws IOException {
            Process proc = Runtime.getRuntime().exec(args);
            InputStream inputStream = proc.getErrorStream();
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
            String s = null;
    
            while ((s = bufferedReader.readLine()) != null) {
                    Double progress = Double.parseDouble(s.split("%")[0]) / 100;
                    Platform.runLater(() -> tab_adb_progressbar.setProgress(progress));
            }
            try {
                proc.waitFor();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }


    Плюс к ответу Александра, да, данный метод из GUI потока нужно вызывать обязательно в отдельном, я делаю так же как у вас:
    new Thread(() -> {
    	                        try {
    	                            runCmdWithProgress(commands);
    	                            Platform.runLater(() ->  showDialogInformation(positive);
    	                        } catch (IOException e) {
    	                            e.printStackTrace();
    	                        }
    	                    }).start();


    Всем спасибо!
    Ответ написан
    1 комментарий
  • Как получить процент от числа в интервале?

    @Ksushqa
    Unity developer
    (50-40)/(60-40)
    Либо линейную нормализацию посмотрите.

    Перечитала ваш вопрос. Все-таки не поняла его. Формулировка странная.
    Вы имеете в виду определить, где именно находится число 50 на заданном интервале? И отобразить в виде процента. Для чего вам это нужно, напишите.
    Ответ написан
    1 комментарий
  • Как получить процент от числа в интервале?

    @crazywu
    Для удобства сдвигаете границы и значение к 0
    60 - 40 = 20
    50 - 40 = 10
    После чего считаете процент числа от верхней границы 10/20 *100% = 50%
    Ответ написан
    Комментировать
  • Как вывести запись из БД mysql на сайт за определённый промежуток времени?

    @Brain_code
    Вам просто нужно отфильтровать данные с помощью WHERE, BETWEEN, AND
    Измените свой sql запрос
    SELECT * FROM `название вашей таблици` WHERE `поле сортировки` BETWEEN '2019-01-01 (з какого)' AND '2019-04-30 (по какое число)'
    Ответ написан
    Комментировать
  • Как убрать лишние нули вконце числа?

    twobomb
    @twobomb
    В строке ?
    var a = "0.000000009000000000";
    a = a.replace(/0*$/,"");
    Ответ написан
    3 комментария
  • Как в java swing получить картинку из массива?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    С какими именно цифрами? В какое изображение? И самое главное - при чем тут вообще Swing?

    Если под "цифрами" подразумевается массив байт, содержащий, например, закодированное в JPEG изображение, которое хочется поиметь в ImageIcon (кажущаяся мне наиболее вероятной интерпретация вопроса в контексте Swing), то, например, вот так:
    byte[] arBytes;
    ...
    ImageIcon icon = new ImageIcon(arBytes);

    или так:
    BufferedImage image = ImageIO.read(new ByteArrayInputStream(arBytes));

    Если же цифры - действительно цифры, то тут, увы, нет иного способа "получить картинку", иначе как взять, да и отрисовать их на канвасе, например, вот так :
    int[] arInts = {0,1,2,3,4,5,6,7,8,9};
    ...
    BufferedImage img = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
    Graphics2D g2d = img.createGraphics();
    g2d.setPaint(Color.red);
    g2d.setFont(new Font("Serif", Font.BOLD, 18));
    FontMetrics fm = g2d.getFontMetrics();
    int x = 5;
    for(int i : arInts){
        String s = (new Integer(i)).toString();    
        g2d.drawString(s, x, 5);
        x += fm.stringWidth(s) + 5;
    }
    g2d.dispose();
    Ответ написан
    Комментировать