• Как долго живет сессия гугл?

    @Ne7Le4Der
    Мы можем устанавливать длительность жизни cookies либо через атрибут Expires, указывая конкретную дату и время, либо через атрибут Max-age, указывая время жизни в секундах с момента установки куки. Сессионная же кука, как следует из названия, живет во время сессии - как только вы закроете клиент (в случае с вебом - браузер), кука удалится.

    Подробнее: https://developer.mozilla.org/ru/docs/Web/HTTP/Cookies

    UPD:
    Однако, если в браузере включено автоматическое восстановление сеанса, что случается очень часто, cookie сеанса может храниться постоянно, как если бы браузер никогда не закрывался


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

    Vindicar
    @Vindicar
    RTFM!
    description = f"""У тебя , **{ctx.author}** вот столько балов!**{cursor.execute("SELECT cash FROM users WHERE id = {}".format(ctx.author.id)).fetchone()[0]} :polegar_para_cima:**"""

    Вот это - трижды говнокод.
    1. Не засовывай в шаблонные строки ничего сложнее одной арфиметической операции - результат абсолютно нечитаем и неконтролируем (в чем ты убедился).
    Неправильно:
    description = f"""У тебя , **{ctx.author}** вот столько балов!**{cursor.execute("SELECT cash FROM users WHERE id = {}".format(ctx.author.id)).fetchone()[0]} :polegar_para_cima:**"""

    Правильно:
    score = cursor.execute("SELECT cash FROM users WHERE id = {}".format(ctx.author.id)).fetchone()[0]
    description = f"""У тебя , **{ctx.author}** вот столько балов!**{score} :polegar_para_cima:**"""

    2. Никогда не формируй запросы через форматирование строк. Слишком легко словить ошибку, явную или неявную.
    Неправильно:
    score = cursor.execute("SELECT cash FROM users WHERE id = {}".format(ctx.author.id))

    Правильно:
    score = cursor.execute("SELECT cash FROM users WHERE id = ?", (ctx.author.id,) )

    3. Всегда проверяй, что ты получаешь из базы! Нет гарантий, что запись с указанным id и впрямь существует.
    Неправильно:
    score = cursor.execute("SELECT cash FROM users WHERE id = ?", (ctx.author.id,) ).fetchone()[0]
    description = f"""У тебя , **{ctx.author}** вот столько балов!**{score} :polegar_para_cima:**"""

    Правильно:
    score_row = cursor.execute("SELECT cash FROM users WHERE id = ?", (ctx.author.id,) ).fetchone()
    if score_row is not None:
        description = f"""У тебя , **{ctx.author}** вот столько балов!**{score_row[0]} :polegar_para_cima:**"""
    else:
        # что делать, если такого юзера еще нет в базе?
        cursor.execute("INSERT INTO users (id, cash) VALUES (?, 0)", (ctx.author.id,) ) # можно его добавить
        description = f"""У тебя , **{ctx.author}** пока нет ничего! Но скоро будет!"""

    4. БаЛЛов, блин.
    Ответ написан
    5 комментариев
  • Как без сторонних библиотек посчитать количество цветов в картинке jpg?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    jsfiddle.net/thirtydot/9SEMf/869
    Впрочем код легко адаптируется и под ванильный js
    Ответ написан
    1 комментарий
  • Как сверстать такой border?

    inkShio
    @inkShio
    5f57c1da58273377955054.jpeg
    в блоке 1 делаешь картинку бекграунд с косыми линиями
    в блоке 2 делаешь отступы и белый фон
    Ответ написан
    1 комментарий
  • А вы правда умеете программировать?

    bingo347
    @bingo347
    Crazy on performance...
    В вопросе наглядный пример моего утверждения, что "учить" - это плохое слово. В нашем мозгу оно ассоциируется с зазубриванием чего-либо. Вот только зазубривая что-либо освоить это не получится. Но тем не менее слово "учить" встречается крайне часто: люди пытаются учить программирование, учить языки (неважно C# или английский), а учить таблицу умножения нас подсаживают еще с младших классов. Не надо учить. Это бесполезно. Стихи еще можно учить, понимание мыслей автора это не даст, но память натренирует. А вот программирование, языки и таблицу умножения учить не нужно, нужно понять. Правда вот учителя начальных классов многие сами таблицу умножения не понимают, а тупо заучили наизусть, и так и продолжают передавать ученикам, с XIX века ничего не поменялось.
    Вы можете выучить синтаксис языка, но это лишь шелуха, абстракция, набор правил как преобразовывать этот язык в другой. Без понимания знание абсолютно бесполезное. Ну знаете Вы, что существуют в некотором условном языке if, for, while. Но сможете ли Вы из этого составить некоторую программу без понимания что это и зачем. А заучивание Вам этого понимания не даст.
    Вы можете выучить функции стандартной библиотеки, но это опять шелуха. Эти функции кто-то написал, часто на том же самом языке, на котором Вы их используете. Но без понимания, что они делают Вы и с ними программы не составите.
    А как Вы собираетесь учить составление алгоритмов? Да у многих сейчас есть мнение, что этот навык не нужен, что все алгоритмы уже составлены, но это иллюзия.
    А навык решения проблем, как заучить его?

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

    То есть все, что Вы собрались учить - это лишь инструменты. Скажите, сделает ли Вас плотником, то что Вы зазубрили как выглядит молоток, а как рубанок? Зато плотник может не знать, как работать с каким-то конкретным станком, но достаточно быстро начнет с ним работать, если дать ему документацию к этому станку. С программистами все так же.
    Ответ написан
    Комментировать
  • Как поменять отдельно каждый input когда он берётся в фокус?

    AngryYumy
    @AngryYumy
    Заплати фрилансеру чеканой монетой
    Поучить немного js да и html тоже.
    1. На странице может быть только один уникальный ид.
    2. Тут вы работаете с первый эл который находите, вам нужен масив.
    3. И через event вызывать функцию (как пример.)
    Ответ написан
    Комментировать
  • Что может Gulp без плагинов?

    sfi0zy
    @sfi0zy
    Creative frontend developer
    Gulp по своей сути - это таск-раннер. Он не умеет ничего, кроме как запускать таски. Он может запускать их последовательно или параллельно, может передавать поток данных от одной таски в другую, может эти данные записать в файл. На этом его возможности заканчиваются. Больше он ничего не умеет. Та функциональность, которую от предоставляет, позволяет удобно организовать большое количество небольших программ, которые могут быть нужны при сборке или деплое проекта, но сами программы его не касаются. Ему сказали запустить - он запускает, не более того.

    Дальше мы уже можем делать программы, таски, под свои задачи, в том числе дополняя их плагинами для Gulp, которые по сути своей - такие же независимые программы, просто соответствующие определенным соглашениям о том, как работать с вводом-выводом данных.
    Ответ написан
    Комментировать
  • Как сделать чтобы progress bar увеличивался на 7 каждые 2 секунды?

    Qurel
    @Qurel Автор вопроса
    Решила задачу: Codepen
    Ответ написан
    Комментировать
  • Что можно назвать js фреймворком?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Тут всё есть: https://ru.wikipedia.org/wiki/Фреймворк . Чётко и ясно. Плохо искал(искал ли?).
    Для js и не для js, разницы никакой.
    Ответ написан
    1 комментарий
  • Как сделать изображение на 100% экрана без обрезания?

    Spartak-2205
    @Spartak-2205
    Разработка и создание сайтов
    background-size: contain;
    Масштабирует картинку так, чтобы она максимально накрыла собой весь блок. Картинка при этом не обрезается, а вписывается в блок с сохранением пропорций.
    Ответ написан
    9 комментариев
  • Как вернуть функцию?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Это называется асинхронность. Гугли на тему, информации вагон.
    Если вкратце, то: вызов функции происходит сейчас, возврат из функции получается сразу после вызова, а ответ из базы приходит когда-нибудь потом, когда база подумает.
    Варианта всего два:
    1. использовать callback - функцию которая будет вызвана поле завершения запроса(та самая function(err, result, row) {);
    2. использовать Promise
    function CheckLoginPromise(login){
      return new Promise(
        (resolve, reject) => DataBase.Handle.query('SELECT * FROM `users` WHERE `login` = ?', [login], function(err, result, row) {
          if(err) return reject(err);
          if(result.length > 0) {
            console.log(result);
            return resolve(true); 
          }
          resolve(false); 
        })
      )
    }
    
    CheckLoginPromise(login).then(bool => {
      // делаем что-то
    })

    2а. использовать async\await сахар для Promise.const bool = await CheckLoginPromise(login);
    Ответ написан
    Комментировать
  • Как сделать скриншот страницы полностью?

    rdifb0
    @rdifb0
    Программист, реалист
    В Firefox Shift-F2 и вводим screenshot file.png --fullpage
    Ответ написан
    11 комментариев
  • Как передать scss переменные во vue плагин?

    profesor08
    @profesor08 Куратор тега JavaScript
    Плохая идея. Компоненты плохо дружат с таким подходом. Так сами по себе они должны быть самодостаточными. А так выходит, что вся самодостаточность улетает в трубу. Используй темы и передавай их через пропсы, с цветами если надо, и тд.
    Ответ написан
    Комментировать
  • Как решить эту проблему с if/else?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    В localStorage хранятся только строки. Если вы делаете так localStorage.setItem('token', false), то при localStorage.getItem('token') вы получаете не '', а результат приведения false к строке, т.е. 'false'.
    Впрочем false !== '' - тоже истина, потому что !== сравнение без приведения типов.
    Ответ написан
    Комментировать
  • Нужно ли жаловаться на пользователей, которые удаляют свои вопросы, а потом задают их заново?

    https://qna.habr.com/help/rules

    4.1. Дублирование вопроса, который уже размещался на страницах Сервиса. В том числе и в случае, если вопрос был удалён модератором, или на вопрос не был дан ответ (т.е. категорически запрещается дублирование вопроса с целью повторного привлечения к нему внимания).


    Скорее всего жаловаться надо
    Ответ написан
    1 комментарий
  • Как коротко создать массив со строками времени?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Array.from({ length: 48 }, (n, i) => {
      const d = new Date(0, 0, 0, 0, 30 * i);
      return d.toLocaleTimeString('en-US', { hour: '2-digit', minute: '2-digit' });
    })
    Ответ написан
    1 комментарий
  • Как в VS Code задать тему подсветки синтаксиса?

    its_me_mamoru
    @its_me_mamoru
    Для этого нужно ставить отдельный плагин. Вот, пользуйся наздоровье:
    https://marketplace.visualstudio.com/items?itemNam...
    Ответ написан
    Комментировать
  • Почему постоянно пропадает интернет на ноутбуке при работе через Wi-Fi (Windows 8.1 + Broadcom + TP-link)?

    Та же проблема) Ноут HP Pavilion dv6 6b56er, роутер MikroTik RouterBoard 951Ui-2HnD
    Проблема так же возникла с установкой 8ки) драйвера ставил официальные под windows 8.1. Обновил все что можно) в квартире также 3 телефона, планшет и 1 еще ноут, тоже на 8ке)) нигде больше такого не наблюдается)

    Нашел статью f1comp.ru/internet/status-ogranicheno-v-windows-8-...
    Помогло решение :
    "Народ для тех у кого адаптер «Broadcom 802.11n» решение найдено сам долго мучился. Откройте диспетчер устройств «Broadcom 802.11n» адаптер-свойства- обновление драйверов — поиск на этом компьютере — выбрать из уже установленных — СНИМАЕТЕ ГАЛОЧКУ только совместимые устройства — из списка выбираете 5.100.245.200 и ставите. Все работает?
    Да и не обновляйте драйвер походу это единственный драйвер без глюка для Windows 8 и 8.1 на сегодня, а техподдержка Майкрософт об этом молчит."
    Ответ написан
    3 комментария