Задать вопрос
  • Как сохранить invite ссылку по которой перешел пользователь телеграмм бота?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Если имеется в виду GET параметры start или startgroup, то их значение будет добавлено в стартовое сообщение через пробел. Т.е. при https://t.me/triviabot?start=payload бот получит входящее сообщение /start payload

    https://core.telegram.org/bots#deep-linking
    Ответ написан
    Комментировать
  • Как удалить определенный коммит?

    @abcd0x00
    Выполни rebase -i до родителя коммита, который удаляешь.
    git rebase -i 6159eb3~
    Там откроется окно, в котором надо будет удалить строку с коммитом 6159eb3.
    После удаления сохраняешь и выходишь.

    Помни, что rebase создаёт все коммиты заново, поэтому применять его можно, пока никто твои коммиты не закачал к себе, иначе у них появятся дубликаты одних и тех же коммитов с разными хешами.
    Ответ написан
    3 комментария
  • Как запустить скрипт python в фоне как демон?

    @MadridianFox
    Web-программист, многостаночник
    Чтобы программа работала "в фоне", она должна либо сама позаботиться о том чтобы не блокировать консоль и не умирать при закрытии баша, либо доверить это специальной программе.

    Как уйти в фон самостоятельно:
    Процессы (работающие программы) имеют идентификаторы и знают кто их запустил, посредством хранения id родительского процесса. Т.о. у нас есть дерево процессов. Родительский процесс может управлять дочерними, и он должен при своём завершении завершать и свои дочерние процессы. Если он этого не сделает, то дочерний процесс сменит родителя на процесс с id = 1, т.е. на init процесс. Поэтому чтобы уйти в фон, ваша программа должна всего лишь остановить её родительский процесс.
    Проблема в том, что родительский процесс для программы, которую вы запускаете в консоли - это сама консоль и нам не надо чтобы она закрылась.
    Поэтому уходящие в фон программы перед остановкой родителя увеличивают уровень вложенности - т.е. запускают свою копию, и эта копия, будучи дочерней для первого процесса программы, убивает уже не баш, а вспомогательный родительский процесс.
    Другой момент - это отвязаться от консоли. Тут всё просто - надо перенаправить stdin, stderr и stdout в файлы.
    Ну и наконец надо позаботиться об управлении демоном, ведь пока что нам не остаётся ничего другого, кроме как посылать ему сигналы командой kill. Чтобы реализовать более понятные команды, надо сделать две вещи:
    1) во время ухода в фон сохранить в файл pid результирующего процесса
    2) написать немного кода в самой программе или во вспомогательном скрипте, который, при вызове его в консоли, будет читать pid из файла и манипулировать процессом.

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

    Другой вариант - использовать вспомогательные программы.
    С одной стороны у нас есть возможности самого баша - jobs т.е. фоновые процессы, которые однако умирают при закрытии консоли. Чтобы это обойти есть команда disown и программы nohup и setsid.
    Они позволяют так или иначе получить процесс отвязанный от баша. Однако управлять процессом можно будет только сигналами.
    С другой стороны есть менеджеры процессов. Например supervisord или pm2. Это такие программы, которые умеют уходить в фон и умеют, уже будучи демоном, запускать другие программы и управлять ими.

    Ну и наконец всегда есть главный менеджер процессов вашего компьютера/сервера - это система инициализации, которая сейчас почти везде - systemd. Делает то же самое что и обычный менеджер процессов, но ещё и позволяет управлять последовательностью запуска процессов.

    Итог: выбирать способ демонизации процесса необходимо исходя из стабильности его работы. Если это сервер, который должен работать месяцами и запускаться при старте системы - то надо использовать систему инициализации. Так делают Nвеб-сервера, базы данных и всякие капитальные сервисы.
    Если процессы более динамичные и их надо периодически запускать и останавливать, то лучше взять менеджер процессов.
    Если это совсем уж мимолётное желание запустить программу в фоне, пусть поработает а там остановлю, то можно не заморачиваться и отвязать её от баша тем или иным способом.

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

    @prolige Автор вопроса
    Вопрос решил сам, чтобы запустить много процессов php в windows при помощи батника, одна строка - один запуск скрипта.
    start /B E:\php\PHP_7.2\php.exe -f E:\http\index.php
    start /B E:\php\PHP_7.2\php.exe -f E:\http\index.php
    start /B E:\php\PHP_7.2\php.exe -f E:\http\index.php

    В линуксе проще:
    $num_rows = 3; //кол-во запусков скрипта
    for ($i = 0; $i < $num_rows; $i++) {
    shell_exec("php index.php > /dev/null &");
    }
    Ответ написан
    Комментировать
  • Как анализировать вакансии front/-backend разработчиков?

    DevMan
    @DevMan
    не стоит удивляться: в таких вакансиях расставляют требования точно так же как и вы теги к своему вопросу.
    Ответ написан
    24 комментария
  • Как убрать неразрывный пробел из строки?

    @ReactiveSnaile
    Ращу PHP
    $price = str_replace(array(" ", chr(0xC2).chr(0xA0)), '', $price);
    Ответ написан
    2 комментария
  • Как реализовать алгоритм движения по спирали?

    Автор, вот ваш исправленный пример, подчистил JS, но HTML трогать не стал.

    В целом идея следующая: чтобы кривая смотрелась цельной, надо сохранять расстояние между её соседними точками. В коде это расстояние обозначено как ds. В случае вашей спирали радиус увеличивается на одинаковую величину при каждом обороте. В моём коде это dr.

    Мы знаем, текущий радиус r и расстояние, которое должно быть между точками, поэтому можем легко вычислить увеличение текущего угла phi = arctg(ds / dr).

    Теперь осталось вычислить увеличение радиуса. Мы знаем, на какую величину изменяется радиус при полном обороте, также нам известен угол, на который повернулся радиус. Увеличение радиуса будет пропорционально увеличению угла: r += dr * phi / (2 * pi).

    Вот и всё =)
    Ответ написан
    3 комментария
  • Турбо страницы и АМП, актуально ли?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    ну Гугл их в выдачу пихает выше, воленс-не-воленс приходится держать

    особенно когда у всех конкурентов есть
    Ответ написан
    Комментировать
  • Турбо страницы и АМП, актуально ли?

    opium
    @opium
    Просто люблю качественно работать
    Супер актуально, читаю все только с ампов и турбо нынче
    Ответ написан
    Комментировать
  • Как узнать обработчики событий на элементе?

    aen
    @aen
    Keep calm and 'use strict';
    В Chrome Dev Tools выделите нужный вам элемент и перейдите на вкладку Event Listeners (сайдбар во вкладке Elements).
    Ответ написан
    Комментировать
  • Существуют ли системы распознавания смысла текста?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    Студент на аутсорсе.
    Ответ написан
    Комментировать
  • Можете помочь с понимаем кода?

    KickeRocK
    @KickeRocK
    FrontFinish
    На каждом шаге rest принимает значение list из предыдущего. То есть плодится вложенность
    Картинка

    1452520067160988021.jpg
    Ответ написан
    Комментировать
  • Как построить башню из звёздочек?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const tower = length =>
      Array.from({ length }, (n, i) => Array(2)
        .fill(' '.repeat(length - i - 1))
        .join('*'.repeat(i * 2 + 1))
      );

    или

    const tower = length =>
      Array.from({ length }, (n, i) => (
        n = Array(length - i).join(' '),
        n + Array(-~i << 1).join('*') + n
      ));
    Ответ написан
    1 комментарий
  • Как убрать подсказки при названии переменных в PhpStorm?

    anton_reut
    @anton_reut
    Начинающий веб-разработчик
    Вся суть IDE в этом заключена , юный падаван... Тебе установить Notepad++ необходимо.
    e8e7311ab9c766a79dff9d6c7818bc688beffa5b
    Ответ написан
    1 комментарий
  • Как сделать вот такую верстку?

    SmthTo
    @SmthTo Куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    Минимальная ширина просто для примера, чтобы был виден вылет вверх на мобильных, для них нужно просто через media подгонять ширину блока с текстом, что мне делать лень.

    Ответ написан
    Комментировать
  • Как на javascript и jquery реализовать поблочный скролл?

    @reZed Автор вопроса
    Нашел, такую вещь, идеально вписалась www.thepetedesign.com/demos/onepage_scroll_demo.html
    Ответ написан
    Комментировать
  • Как реализовать алгоритм движения по спирали?

    @Mercury13
    Программист на «си с крестами» и не только
    Я бы сделал примерно такую систему уравнений.

    r = sqrt(t)
    phi = a·r

    t — параметр, условное «время»; phi — полярный угол, r — длина радиус-вектора.
    Ну и, соотвественно, x = r cos phi, y = r sin phi.

    В общем, радиус (ну или угол) должен увеличиваться со скоростью квадратного корня.

    В этом деле есть физический смысл — это решение дифура r′(t)=1/r. Только двоечку и константу интегрирования упустил, ибо они нам как бы не нужны. Метод не точный, но если посмотреть на длину дуги спирали, там самый большой член квадратичный.

    Если нужен СОВСЕМ стабильный зазор (например, расположить по спирали какие-то кружочки), у меня есть рекуррентный алгоритм.
    Как написать алгоритм спирали?
    Ответ написан
    Комментировать
  • Очень непонятная проблема с условиями, что делать?

    @Banan44 Автор вопроса
    Full Stack
    Решил, проблема была в том что goblinPosX и goldX воспринимались как строки
    Ответ написан
    2 комментария