• Как отправлять последние данные из бд каждую неделю?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Очевидно, надо хранить в БД дату поступления данных и делать выборку по этому полю за прошлую неделю. Python тут вообще не при чём.
    Ответ написан
    2 комментария
  • Платит ли вайлдберис/озон комиссию гугл плею/аппстору за продажи физ. товаров в приложении?

    Нет. Аппстор и гугл плей явно описывают в своих правилах, что комиссия взимается только за цифровые покупки в приложении, а не физические.
    Если бы в правилах не было такой оговорки, то мы бы просто не увидели бы приложений интернет-магазинов в обоих сторах)
    Ответ написан
    Комментировать
  • Что предпочтительнее insertAdjacentHTML или создавать элементы через createElement?

    y0u
    @y0u Куратор тега JavaScript
    dev
    Всё зависит от ситуации. Предпочтительнее createElement, так как в момент создания сохранится ссылка на элемент для последующей работы с ним. Если работать с этим элементом не нужно, например если с сервера пришел ответ в виде html строки и нужно всего лишь отобразить результат без дополнительных действий, то createElement здесь не нужен.
    Ответ написан
    Комментировать
  • Почему нет функции удалить свой вопрос?

    yarkov
    @yarkov
    Помог ответ? Отметь решением.
    Вопрос можно удалить если нет ответов
    Ответ написан
    Комментировать
  • Почему Yii/Yii2 не подходит для крупных проектов?

    @karminski
    Senior React.JS Developer
    У нас в компании 4 энтерпрайзных проекта на Yii2. В том числе CRM. В том числе и связь с телефонией, 1С, баг-трекером. Всё работает отлично, без нареканий. О каких "слабых" местах вы говорите? Прекратите читать - начните делать!
    Ответ написан
    7 комментариев
  • Как перехватывать все вызовы console.log?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    var originalConsoleLog = console.log;
    
    console.log = function () {
      ...
    
      originalConsoleLog(arguments);
    }
    Ответ написан
    Комментировать
  • Как перехватывать все вызовы console.log?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const oldLog = console.log;
    
    console.log = function(...args) {
      // здесь можете что-нибудь сделать с переданными значениями
    
      oldLog(...args);
    };
    Ответ написан
    Комментировать
  • Сравните Tornado и Sanic. Что лучше?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    С одной стороны Tornado - это фреймворк от Facebook, а с другой - это морально устаревший фреймворк из тех времён, когда кооперативная многозадачность в Python реализовывалась только генераторами. Sanic же - это попытки нонеймов сделать асинхронный Flask. И тот, и другой применимы, но ни тот, ни другой лично я использовать бы не стал для новых проектов.
    Ответ написан
    2 комментария
  • При загрузке страницы вылетело исключение. На какую страницу делать редирект?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Редирект в случае ошибки сделать невозможно.
    Потому что в случае ошибки сервер обязан отдать НТТР статус с кодом 5хх
    А редирект выдает код 3хх
    То есть, если сделать редирект, то клиент не узнает, что это ошибка.

    При возникновении ошибок поведение боевого сервера должно быть стандартным:
    1. залогировать ошибку для программиста
    2. Отдать корректный код статуса для НТТР клиента
    3. В случае, если запрос делал браузер, то желательно показать посетителю сайта какую-то осмысленную страницу.

    Можно, кстати, обойтись без try-catch, Правильно ли я понял централизованную обработку исключений в PHP?
    Ответ написан
    1 комментарий
  • Как установить переменную $? в си программе?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    $? - это статус завершения последней программы.
    В C соответствует значению, возвращаемому функцией main. Нормальное завершение программы должно возвращать 0, каждая ошибка обычно соответствует своему коду.
    Ответ написан
    Комментировать
  • Как распарсить строку?

    cr1gger
    @cr1gger
    Все дороги ведут в Рим — встретимся в Риме!
    Ответ написан
    Комментировать
  • Имеет ли смысл смена специальности?

    saboteur_kiev
    @saboteur_kiev Куратор тега IT-образование
    software engineer
    Да не помогут вам такие вопросы.
    Вы же понимаете, что карьера - вещь сугубо индивидуальная. Не всегда даже зависит от знаний и наличии вакансий. Куча случайностей могут вам помочь или наоборот подставить.

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

    В результате вы узнаете парочку кулстори. И?

    Вам нужна мотивация? Ну уже ж не маленький.

    Смена квалификации бывает больно, бывает нет. В наше время все зависит даже не от проекта, а от стабильности, когда нет такого, что "из-за корона, от нас ушел заказчик и бизнес, завтра разбегаемся", или "из-за военной ситуации на западе/востоке, заказчик решил свалить в Индию, за месяц сдаем дела и разбегаемся".

    Профессионал это не полубог, и даже не гений.
    Это просто тот, кто прилагал усилия к выполнению работы и к повышению своей собственной квалификации в течение продолжительного времени. А это время может прерваться по разным причинам (недостаток мотивации; устал, уныл; здоровье; внешние факторы).

    Если есть вакансия, которая вас устраивает по деньгам - идешь и работаешь.
    А планировать себе карьеру на 10-20-30 лет вперед могут только оракулы.
    Ответ написан
    Комментировать
  • Как использовать nginx как прокси для mysql?

    @q2digger
    никого не трогаю, починяю примус
    nginx может проксировать НЕ только http/https трафик.
    https://docs.nginx.com/nginx/admin-guide/load-bala...
    другой момент что это страшный костыль и так делать лучше не надо.
    но если очень хочется то вот пример, прям с сайта nginx
    https://www.nginx.com/blog/scaling-mysql-tcp-load-...

    и да, я присоединяюсь к комменту о том что в базе можно и без nginx-а подключаться вполне себе успешно..
    Ответ написан
    7 комментариев
  • Кнопка "ответить" к своему собственному коментарию - это баг или фича?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Это инженерный компромисс. Наличие кнопки не делает никому хуже, при этом позволяет не усложнять код лишними условиями.
    Ответ написан
    9 комментариев
  • Как зашифровать число в буквы и обратно?

    @Nc_Soft
    Ответ написан
    Комментировать
  • Чем отличаются Unix- подобные системы от не unix систем?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Читай что такое https://ru.wikipedia.org/wiki/POSIX
    Вкратце - это стандарт, который описывает требования к операционке.
    Если операционка написана так, что этот стандарт она поддерживает, то уже готовую программу можно под нее скомпилировать из существующего кода, а не писать специально для нее с нуля.

    Какие фреймворки? Какие библиотеки - ОС это практически самое низкоуровневое, что есть. Поэтому да, чистый код, с использованием функций биос.

    Какие должны быть атрибуты unix ядра, точнее обратный вопрос как написать не unix подобное ядро.

    Придумываешь что хочешь и пишешь - получится не юникс подобное.
    Ответ написан
    Комментировать
  • Как генерируется JWT?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Токен включает в себя метку времени, до которой действителен.
    Ответ написан
    2 комментария
  • SQL инъекция в UPDATE возможна ли?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Инъекция может быть через любой запрос.
    И защищать тоже надо любые запросы.
    Никогда не надо торговаться, "а можно я не буду защищать именно этот запрос? Ну мааааам!"
    Надо просто всегда следовать простым правилам - любая переменная попадает в запрос только через плейсхолдер

    Важно понимать, что в рассуждениях про инъекции люди постоянно путают два понятия - самой уязвимости, и конкретных способов ей воспользоваться.

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

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

    Кроме того, любая уязвимость - это всегда ошибки. Если в $id будет пусто, то запрос вызовет ошибку. Если в $id будет слово select то запрос вызовет ошибку. Если будет слово "привет", то запрос вызовет ошибку. Оно тебе надо?

    При этом разных вариантов возможных ошибок и способов воспользоваться уязвимостью - тысячи, им посвящены целые учебники и статьи. Но для того чтобы защищаться, не надо знать ни одного. Потому что защищаться надо не от отдельных способов эксплуатации, а закрывать саму уязвимость. И сделать это очень просто:
    1. Любые данные должны добавляться в запрос только через плейсхолдеры
    2. Любые другие элементы запроса должны выбираться из белого списка - заранее прописанных в нашем коде значений.


    Если вопрос "а можно я не буду защищаться?" вызван ленью, то это тоже решаемо. В принципе, лень - это очень важное качество для программиста. Главное - направить её в нужное русло.

    Если каждый раз писать по три строчки долго
    $sql = "INSERT INTO users SET email = ?, password = ?"; // заменяем на знаки вопроса
    $stmt = $db->prepare($sql); // подготавливаем запрос, получаем stmt
    $stmt->bind_param("ss", $email, $hash); // два знака вопроса - две переменных - две буквы s
    $stmt->execute(); // выполняем запрос

    То надо воспользоваться такой вещью, как программирование. И написать функцию, которая возьмет на себя всю рутинную работу.
    function prepared_query($mysqli, $sql, $params, $types = "")
    {
        $types = $types ?: str_repeat("s", count($params));
        $stmt = $mysqli->prepare($sql);
        $stmt->bind_param($types, ...$params);
        $stmt->execute();
        return $stmt;
    }

    и в итоге предыдущие 4 строчки превратятся в одну:
    prepared_query($db, "INSERT INTO users SET email = ?, password = ?", [$email, $hash]);

    или твой запрос:
    prepared_query($db, "UPDATE table SET test WHERE id = ?", [$id]);

    - просто, быстро, удобно и безопасно
    Ответ написан
    26 комментариев
  • Почему не работает запрос через параметры?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Во-первых, плейсхолдерами можно заменять только данные. Имена баз, таблиц, колонок, а также служебные слова плейсхолдерами не заменяются.
    Во-вторых, в bind_param можно биндить только переменные, но не константы.
    Ответ написан
    Комментировать