• Одновременная работа telegram бота и простой программы?

    paran0id
    @paran0id
    Умный, но ленивый
    Правильным способом было бы написать service-файл для systemd, прописать зависимости, очередность запуска, политику перезапуска при падении, и включить автозапуск.
    Ответ написан
    Комментировать
  • На каком движке работает сайт? Как сделать такой же?

    Sanes
    @Sanes
    Wordpress и тема Justread
    Ответ написан
    Комментировать
  • На каком движке работает сайт? Как сделать такой же?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Такой сайт можно сделать на любом движке. Для этого достаточно знать основы вёрстки и уметь кликать мышкой в админке любой CMS.
    Ответ написан
    Комментировать
  • Можете посоветовать варианты бесплатного хостинга для full-stack пет-проектов?

    thewind
    @thewind
    php программист, front / backend developer
    Сейчас дешевые vps (1 cpu / 1 gb ram / 15 gb disk) стоят 190 руб в месяц - имхо это гораздо удобнее, докер воткнул и делай , что хочешь.
    Ответ написан
    2 комментария
  • Как оптимизировать запрос с подзапросами с COUNT?

    @Akina
    Сетевой и системный админ, SQL-программист.
    SELECT ebids.*
         , SUM(comment_system.itemtype='qqq') AS has_qqq_comment 
         , SUM(comment_system.itemtype='www') AS has_www_comment 
         , SUM(comment_system.itemtype='eee') AS has_eee_comment 
    FROM ebids
    JOIN comment_system ON comment_system.item_id = ebids.id
    WHERE ebids.status != 'auto'
    GROUP BY ebids.id
    ORDER BY ebids.id DESC
    LIMIT 0, 100
    Ответ написан
    Комментировать
  • Как создать сайт для повышение уникальности текста?

    Awilum
    @Awilum
    Частный разработчик, ментор и преподаватель курсов
    Реально
    Ответ написан
    Комментировать
  • Как вставить кусок кода php без ошибки?

    попробуйте так:
    return "<span class=\"text-muted\">".myvalidate($LANG['g_00055'])."</span> <select class=\"border form-control-sm text-muted\" onchange=\"window.location='$_SERVER[PHP_SELF]?page=1&ipp='+this[this.selectedIndex].value+'$this->querystring';return false\">$items</select>";
    Ответ написан
    Комментировать
  • Как стим защищает игру от пиратского распостранения?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    Ответ написан
    Комментировать
  • Можно ли хранить данные не в БД, а в JSON файле?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Можно, но это будет очень глупо, особенно по причине "снизить нагрузку на БД". Не переживайте, пупок у СУБД не развяжется от ваших пяти посетителей в месяц, просматривающих семнадцать товаров. Он не развяжется даже при объёмах на пять порядков больших.
    Плюсов у такого подхода примерно ноль в обычных проектах, а минусы - всё остальное.
    Ответ написан
    5 комментариев
  • Можете поверхностно сказать что делает код?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Это обфусцированный код. Из-за этого нельзя поверхностно взглянуть на код и сказать, что он делает. Только после анализа можно будет сказать. Автор кода хочет, чтобы даже анализ давался сложно, чтобы аналитик потратил много времени и в идеале - отказался от идеи вскрывать этот код.

    Поэтому ответ на вопрос: не можем.

    Если вы не разбираетесь вообще, то вам бегло смотреть нет смысла тем более. Связь с жсон и др. функциями - это ни о чём, потому что почти про любой js код можно так сказать.

    P.S. "Буквально минутку внимания" - риторика на уровне школьника, либо хитрого провокатора. И то, и другое - не в вашу пользу.
    Ответ написан
    Комментировать
  • Можно ли восстановить бота в телеграмме после удаления у фазербота?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Нет, только создать нового с аналогичными реквизитами.
    Ответ написан
    Комментировать
  • Вам нужно нанять "Android junior developer". Какие у вас будут требования?

    GavriKos
    @GavriKos
    Те навыки, которые нужны на проектах куда идет найм.
    Ответ написан
  • Как в django реализовать подобие "плагинов" и "хуков" как в wordpress?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    Вы сравниваете фреймворк с CMS, поэтому и не находите желаемого. Возьмите Django CMS или Wagtail и радуйтесь жизни.
    Ответ написан
    1 комментарий
  • Почему парсер выдаёт 403 даже после указания Cookie и User-Agent?

    @AWEme
    Retard Soft Inc.
    Виной 403 коду является cloudflare.
    Для обхода мне помог cfscrape
    def get_session():
        session = requests.Session()
        session.headers = {
            'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0)   Gecko/20100101 Firefox/69.0',
            'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
            'Accept-Language':'ru,en-US;q=0.5',
            'Accept-Encoding':'gzip, deflate, br',
            'DNT':'1',
            'Connection':'keep-alive',
            'Upgrade-Insecure-Requests':'1',
            'Pragma':'no-cache',
            'Cache-Control':'no-cache'}
        return cfscrape.create_scraper(sess=session)
    session = get_session() # Дальше работать как с обычной requests.Session

    Немного кода о выдёргивании прямых ссылок на хайрес пикчи:
    Код
    import requests
    import cfscrape
    
    def get_session():
        session = requests.Session()
        session.headers = {
            'Host':'www.artstation.com',
            'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0)   Gecko/20100101 Firefox/69.0',
            'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
            'Accept-Language':'ru,en-US;q=0.5',
            'Accept-Encoding':'gzip, deflate, br',
            'DNT':'1',
            'Connection':'keep-alive',
            'Upgrade-Insecure-Requests':'1',
            'Pragma':'no-cache',
            'Cache-Control':'no-cache'}
        return cfscrape.create_scraper(sess=session)
    
    def artstation():
        url = 'https://www.artstation.com/kyuyongeom'
        page_url = 'https://www.artstation.com/users/kyuyongeom/projects.json'
        post_pattern = 'https://www.artstation.com/projects/{}.json'
        session = get_session()
        absolute_links = []
    
        response = session.get(page_url, params={'page':1}).json()
        pages, modulo = divmod(response['total_count'], 50)
        if modulo: pages += 1
    
        for page in range(1, pages+1):
            if page != 1:
                response = session.get(page_url, params={'page':page}).json()
            for post in response['data']:
                shortcode = post['permalink'].split('/')[-1]
                inner_resp = session.get(post_pattern.format(shortcode)).json()
                for img in inner_resp['assets']:
                    if img['asset_type'] == 'image':
                        absolute_links.append(img['image_url'])
    
        with open('links.txt', 'w') as file:
            file.write('\n'.join(absolute_links))
    
    if __name__ == '__main__':
        artstation()
    Ответ написан
    2 комментария
  • Как на сайт добавить график?

    tyoma_koder
    @tyoma_koder
    Через canvas
    Ответ написан
    Комментировать
  • Как добавить данные в БД через HTML-форму?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Сначала учимся правильно соединяться.
    В случае mysqli это
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $link = mysqli_connect($host, $user, $pass, $db_name);
    $link->set_charset("utf8mb4");

    И никаких ужасов с "Соединение не установлено" тут быть не должно.

    После этого выполняем запрос INSERT. Причем запросы мы всегда пишем так, чтобы данные в БД попадали отдельно от самого запроса. Это непреложное правило, которое надо соблюдать всегда.
    Для этого надо
    • Заменить все переменные в запросе на специальные маркеры, которые называются плейсхолдеры или параметры, а по сути - просто знаки вопроса
    • Подготовить запрос к исполнению с помощью функции prepare(). Эта функция принимает строку запроса и возвращает экземпляр специального класса stmt, с которым в дальнейшем и производятся все манипуляции
    • Привязать переменные к запросу.
    • Выполнить подготовленный ранее запрос с помощью с помощью execute()

    В mysqli это будет так
    $sql = "INSERT INTO `events` (`title`, `discription`, `date`, `img`) VALUES (?,?,?,?)";
    $stmt = $link->prepare($sql);
    $stmt->bind_param("sssss", $title, $discription, $date, $path);
    $stmt->execute();

    bind_param() принимает в качестве параметров все переменные, которые должны попасть в запрос, в том же самом порядке, в котором стоят плейсхолдеры в запросе. Но кроме того, сначала в этой функции должны быть указаны типы для всех переменных, в виде строки, где тип переменной обозначается одной буквой. То есть букв в этой строке должно быть ровно столько, сколько дальше будет переменных. К счастью, можно особо не париться с типами и для всех переменных указывать тип "s".

    И тогда никаких ошибок запроса уже никогда не будет. Не говоря уже о том что при любых других вариантах твой сайт поломает любой пятиклассник.

    Весь код, который добавляет запись в БД, должен быть расположен ДО любого вывода.
    После обработки запроса методом POST необходимо перенаправить клиента куда-нибудь методом GET и завершить работу скрипта. Делается это функцией header с заголовком location: . после которой написать exit;
    Соответственно, никаких ужасов с "Запись добавлена".

    Кстати, немного удобнее с БД работать не через mysqli, а чрез PDO, Тем более что там колупаться с bind_param не нужно, а можно сразу отправить все данные в execute

    Подключение
    $host = '127.0.0.1';
    $db   = 'test';
    $user = 'root';
    $pass = '';
    $port = "3306";
    $charset = 'utf8mb4';
    $options = [
        \PDO::ATTR_ERRMODE            => \PDO::ERRMODE_EXCEPTION,
        \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
        \PDO::ATTR_EMULATE_PREPARES   => false,
    ];
    $dsn = "mysql:host=$host;dbname=$db;charset=$charset;port=$port";
    $pdo = new \PDO($dsn, $user, $pass, $options);


    Выполнение запроса
    $sql = "INSERT INTO `events` (`title`, `discription`, `date`, `img`) VALUES (?,?,?,?)";
    $stmt = $link->prepare($sql);
    $stmt->execute([$title, $discription, $date, $path]);
    Ответ написан
    1 комментарий
  • Как передать в icontains несколько значений django?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    services = Service.objects.filter(Q(title__icontains='мужская')&Q(title__icontains='стрижка'))
    Ответ написан
    Комментировать
  • Что лучше flask или Django?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    Что лучше пикап Chevrolet Silverado или купе Nissan Skyline GT-R?
    Ответ написан
    Комментировать
  • Как перейти к определённой строчке кода в python?

    Zoominger
    @Zoominger Куратор тега Python
    System Integrator
    Сделать можно, но уверены ли вы, что тут нужен именно try/except? Может, проверять условиями корректность работы?

    Если б вы скинули код, то можно было бы подсказать.
    Ответ написан
    6 комментариев
  • Как организовать хранение фотографий для сайта?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    Вариантов масса, каждый из которых зависит от кучи нюансов и тонкостей проекта.
    Суть одна - директория для хранения не должна содержать в себе большой объем файлов, что достигается распределением файлов между поддиректориями.
    Принцип создания поддиректорий не суть важен, можно создавать по датам например, типа /16112021/ или более ветвистое 2021/11/16/, как собственно и тумбы - можно создавать как хеш+размер, а можно все как одинаковое название (тот же хеш), но хранить в подпапках размера, типа: /16112021/100x100/e68d51251ab2d826ce8d0b92dd08a7e01c3d.jpeg, что достаточно просто позволит работать с тумбами, зная только фуллсайз картинку.

    Короче вариантов масса, какой подходит вам сказать сложно, просто следуйте логике и здравому смыслу.
    Ответ написан
    Комментировать