• Как задать размер шрифта в эмбеде - Discord.js?

    Alexandre888
    @Alexandre888 Куратор тега discord.js
    Javascript-разработчик
    для форматирования текста дискорд предоставляет специальную разметку, о которой можно прочитать здесь — увеличение/уменьшение размера шрифта не поддерживается.

    максимум, что вы можете сделать —воспользоваться символами маленьких букв английского алфавита, которые можно сгенерировать на этом сайте.
    Ответ написан
    1 комментарий
  • Как работать с аргументами в Discord.js?

    Alexandre888
    @Alexandre888 Куратор тега discord.js
    Javascript-разработчик
    Как получить значение из аргумента?

    для каждого типа аргумента есть свой метод:
    const string = interaction.options.getString('название_аргумента');
    const integer = interaction.options.getInteger('название_аргумента');
    const boolean = interaction.options.getBoolean('название_аргумента');
    const user = interaction.options.getUser('название_аргумента');
    const member = interaction.options.getMember('название_аргумента');
    const channel = interaction.options.getChannel('название_аргумента');
    const role = interaction.options.getRole('название_аргумента');
    const number = interaction.options.getNumber('название_аргумента');
    const mentionable = interaction.options.getMentionable('название_аргумента');
    const attachment = interaction.options.getAttachment('название_аргумента');
    62ed12f82cf2f105202380.png
    Как узнать, какой пользователь ввел команду?

    CommandInteraction.member
    Ответ написан
    7 комментариев
  • Подойдет ли данный ПК для backend разработки?

    xez
    @xez Куратор тега Компьютеры
    TL Junior Roo
    1. Насчет совместимости - читайте QVL для вашей m/b. Нет такого понятия "хорошо работать вместе". Железо либо совместимо, либо нет.
    2. 16Гб, действительно маловато, хотя все зависит от ваших задач. Кому-то и 8 хватает, а кому-то и 64 впритык.
    Тут можно сэкономить немного. Взять для начала 2 по 8, а потом, если не будет хватать - уже думать об апгрейде.
    3. Подойдет. Хватит на какое-то время.
    Ответ написан
    Комментировать
  • Как предотвратить попадания писем в спам?

    yakovmanshin
    @yakovmanshin
    Software Engineer
    Вам нужно настроить SPF и DKIM. В админке Яндекса, когда подключаете кастомный домен (и когда он уже подключен), такие варианты предлагаются.

    Но имейте в виду, что работать это все будет только в том случае, если бот делает рассылки через почтовый сервер Яндекса (smtp.yandex.com).
    Ответ написан
    1 комментарий
  • Можно ли считать тег SQL бесполезным?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Нельзя. Если вопрос в рамках стандарта SQL и не затрагивает специфику конкретной СУБД, то куда его пихать?
    Ответ написан
    4 комментария
  • Почему в fetch не срабатывает catch?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Совершенно мне непонятно, что вы этим кодом хотели сказать. Но.
    не уходит в catch фетча
    Вы ошибаетесь, уходит.
    не передается дальше в catch промиса
    Потому что вы её уже обработали в первом catch. Если зачем-то хотите, чтобы она ушла дальше по цепочке catch, её надо бросить заново.

    Если вам зачем-то необходимо оборачивать promise из fetch в другой (а это вряд ли), то код должен выглядеть так:
    const url = 'https://jsonplaceholder.typicode.co'
    const getUser = async () => {
      return new Promise((resolve, reject) => {
      	fetch(url).then(data => resolve(data)).catch(err => reject(err))
      }).catch(err => err.message)
    }

    Но он полностью аналогичен этому:
    const url = 'https://jsonplaceholder.typicode.co'
    const getUser = async () => fetch(url).catch(err => err.message)

    Только этот код "проглатывает" ошибку и возвращает её текст из функции, а в случае успеха возвращает не полученные данные, а весь объект ответа, на котором нужно дополнительно вызывать .json() или .text().
    Ответ написан
    3 комментария
  • Ошибка ERR_HTTP_HEADERS_SENT, что делать?

    yarkov
    @yarkov
    Помог ответ? Отметь решением.
    Приучите себя всегда писать return res.json
    Ответ написан
    1 комментарий
  • Безопасно ли хранить api ключ в .env?

    yarkov
    @yarkov Куратор тега JavaScript
    Помог ответ? Отметь решением.
    Ну так если он будет передаваться при запросе, то и смысла его прятать нет.
    Ответ написан
    Комментировать
  • Как правильно нумеровать версии программы?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вот был документик. Про семантическое версионирование https://semver.org/lang/ru/
    Ответ написан
    7 комментариев
  • Как правильно нумеровать версии программы?

    GavriKos
    @GavriKos
    Правил куча, единого стандарта нет.
    Ответ написан
    Комментировать
  • Как могут взломать базу данных MySQL?

    @Z1odeypnd
    Здравствуйте.
    Технологий взлома уйма.
    В зависимости от того, какие привелегии получил "хакер" при вломе вашей БД - зависит очень много.
    Если он получил доступ только на чтение, то захешированные в MD5 пароли ему мало чем помогут, т.к. MD5 не имеет алгоритма обратной расшифровки и хэширование спасёт тем, что взломщик получивший доступ на чтение паролей - самих паролей не получит (есть конечно словарь MD5 хешей, то это другая история).
    Вообще для защиты любой БД есть несколько золотых правил:
    0. Переименовать дефолтного админа и защитить его сложным паролем.
    1. Для каждой БД должен создаваться свой владелец и несколько пользователей с разными наборами привелегий.
    2. Ни у одного из пользователей, созданных в п.1 не должно быть прав на изменение таблиц в соседней БД.
    Если есть необходимость обновлять соседние БД - делайте это триггером в соседней БД.
    3. Каждый внешний веб-сервис должен ходить в БД только с тем набором прав, которых ему достаточно для работы. Т.е. не нужно везде прописывать root и надеяться на лучшее.
    В этом случае, если взломщик получит привелегии этого пользователя, то сможет сделать только то, что разрешено этому пользователю. Тогда не выйдет "удалить все и сразу".
    Например, для наполнения католога товаров в интернет-магазине может быть отдельный пользователь, с правами на SELECT, INSERT, UPDATE, DELETE в таблице SHOP_PRODUCTS, например. И ничего более.
    А пользователи, приходящие в магазин за покупками могут делать SELECT, INSERT, UPDATE, DELETE только в таблицу CUSTOMER_CART. В коде веб-сервиса, естественно должна быть проверка, что покупатель редактирует СВОЮ корзину.
    Для показа каталога товаров - отдельный пользователь, имеющий право только на SELECT из таблицы SHOP_PRODUCTS.
    А продажу товара может делать отдельный пользователь, с правом только на UPDATE колонки AMOUNT в таблице SHOP_PRODUCTS. Пример:
    GRANT SELECT ON shopdb.SHOP_PRODUCTS TO 'trader_bot'@'shophost';
    GRANT UPDATE (AMOUNT) ON shopdb.SHOP_PRODUCTS TO 'trader_bot'@'shophost';

    И т.п. По принципу "Разделяй и властвуй."
    4. Писать запросы с использованием placeholder'ов (подстановку данных), что убережёт от SQL-инъекций.
    Пример:
    $DB->select('SELECT * FROM tbl WHERE a=? AND b=?', $a, $b);

    5. Если и БД и приложение, используещее БД установлены на одном сервере - отключить удалённый доступ к БД и работать через сокеты.
    6. Последний, но самый важный - БЕКАПЫ. При удалении всего и вся - нужно откуда-то восстановиться. Делайте бекапы и храните на отдельном сервере (не выставленном наружу).
    Ответ написан
    3 комментария
  • Как пофиксить эту ошибку?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Возвращайте JSON со статусом и необходимыми данными.
    {
      "status": "error"
      "error": {
        "form": {
          "email": "Пользователь с таким адресом электронной почты уже зарегистрирован",
          "password": "Слишком короткий пароль. Минимальная длина 8 символов."
        }
      }
    }

    {
      "status": "ok"
      "location": "/email-verification"
    }
    Ответ написан
  • Как правильно нумеровать версии программы?

    vabka
    @vabka
    Токсичный шарпист
    Есть ли какие-то определенные правила?

    Правила есть разные. Из популярного - уже упомянутый https://semver.org/lang/ru

    Но semver, как правило, не очень подходит для приложений - он больше заточен для библиотек, чтобы из номера версии было понятно, совместимы две разные версии между собой или нет.

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

    как правильно

    Правильно будет определить, какую проблему ты хочешь решить при помощи особой системы нумерации.
    Если у тебя нет каких-то особых задач типа "номер версии должен сообщать, когда была выпущена версия программы" или "из номера версии должно быть очевидно, совместима ли новая версия со старой", то лучше остановиться на варианте с увеличивающимся номером.
    Ответ написан
    2 комментария
  • Почему не открывается вторая крышка корпуса?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    когда я работал эникеем, такие случаи попадались нередко.
    Торопиться ковырять отверткой не надо.

    Сначала надо снять переднюю крышку (морду) и убедиться, что там нет каких-то винтов и защелок.
    Морда может и сама держать эту крышку (встречались и такие варианты).

    Потом глазами изучить со стороны морды, как крышка снимается.

    Да, перед силовыми упражнениями лучше удалить из корпуса тяжелые детали (видеоплату, радиатор процессора), иначе можно резким движением сорвать их. Также и жесткие диски.

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

    У некоторых корпусов крышка не просто сдвигалась, а сначала верх ее надо было на 5 градусов отклонить, потом низ выходил из паза.
    Ответ написан
    5 комментариев
  • Почему не открывается вторая крышка корпуса?

    yakovlev_13
    @yakovlev_13
    Шаманство, экзорцизм и некромантия.
    без повреждений - клеишь три куска скотча с хвостами на крышку (по ходу движения крышки в положение открыть), чтоб хвосты в одно место сходились, кладём на бок и рвём на себя.
    а так отвёртка в помошь.
    Ответ написан
    2 комментария
  • Почему не открывается вторая крышка корпуса?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    Поскольку этот компьютер заводской сборки ("ПУСК"), есть вариант, что где-то вместо винта стоит заклёпка. Специально, что бы нельзя было из гарантийного системного блока что-то вынуть без механического повреждения.
    Ответ написан
    2 комментария
  • Почему не открывается вторая крышка корпуса?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Ну, тут два варианта - либо там есть еще винты, либо крышка приржавела. Если винтов там точно больше нет - отжать плоской отверткой с краю крышки и сдвинуть вбок. Ну либо хардкор - крышку пилить :)
    Ответ написан
    Комментировать
  • Являются ли стрелочные функции аналогом bind функций?

    iiiBird
    @iiiBird
    Пока ты спишь - твой конкурент совершенствуется
    2 комментария
  • Что лучше? MySQL или PostgreSQL для масштабирования в крупном проекте?

    subvillion
    @subvillion
    MySQL проще, PostgreSQL мощнее.
    MySQL большие допущения по умолчанию, PostgreSQL строгий из коробки
    MySQL любит RAM, PostgreSQL любит CPU
    Репликация, IMHO, у обоих - авно, синхронный мультимастер = портал в Ад.
    При частом удалении данных PostgreSQL решает, тк есть механизм vacuum, уменьшающий размер БД на диске, FPT на MySQL решает проблему частично.
    Имел секс с обеими БД, с PG он реже, но приятнее.
    Ответ написан
    Комментировать