• Что использовать Long Polling или Webhooks?

    Dr_Elvis
    @Dr_Elvis Куратор тега Python
    В гугле забанен
    делай сразу на вебхуках. полинг удобен разве что для кратковременного присоединения бота. для постоянного стабильного подключения вебхуки. разница в том что полинг сам постоянно опрашивает сервер "есть чо для меня?", на что сервер либо выдает данные, либо нет. а вебхуки это типо "вот мой адрес, пришли данные когда появятся" и сидит ждет от сервера телеграма когда тот пришлет чего.
    Ответ написан
    2 комментария
  • Менеджер паролей iOS российский?

    @Drno
    1. Не умрет
    2. Не существует. (продукты касперского я не считаю адекватными)
    Ответ написан
    Комментировать
  • Стоит ли выносить код в отдельный компонент?

    Aetae
    @Aetae
    Тлен
    Всегда.
    Больше пяти строчек в разметке - отдельный компонент.
    Больше пяти строчек в коде - отдельный хук.)
    Ответ написан
    Комментировать
  • Что писать в резюме чтобы были шансы куда-то попасть без опыта?

    ArchitectOfRuin
    @ArchitectOfRuin
    WordPress-энтузиаст, маркетолог, переводчик
    Десятки откликов - это очень мало. Раньше, когда требовалась работа, я отписывал массово на email разным компаниям по вакансиям.
    Более сотни откликов, еще и написанных по-разному, чтобы в спам не улетало.
    В итоге из сотни откликов нашел пару вариантов для себя. Тоже без опыта. Без вышки. Компаниям на это начхать, если надо вакансию закрыть.
    Просто те вакансии, которые ты видишь, они обычно создаются рекрутерами для имитации какой-то своей деятельности. Чтобы показать начальству: "Смотрите, я работаю!" Они и не заинтересованы кого-то там нанимать. Во многих компаниях открытая вакансия идет в счет другому специалисту, который периодически делает типа "за двоих", а потому и деньги себе зачисляет. Такие тоже заинтересованы в отсутствии человека.
    И еще момент. На крупных биржах вакансий (не будем тыкать пальцем) многие объявления - фейковые. Никого там не ищут и не отвечают никогда. Вот исходя из этой картины мира и делай выводы.
    Ответ написан
    Комментировать
  • Как найти одинаковые на "вид" слова?

    hint000
    @hint000
    у админа три руки
    Выскажу очевидную мысль: сравнивать нужно не слова целиком, а посимвольно.
    Нагугливается без особых усилий целая кучка материалов:
    https://stackoverflow.com/questions/39948627/how-t...
    https://ru.wikipedia.org/wiki/Модуль:Похожие_символы
    https://en.wikipedia.org/wiki/Homoglyph
    https://ru.wikipedia.org/wiki/Омоглиф
    https://codebox.net/pages/homoglyph-detection
    https://habr.com/ru/post/86303/
    Ответ написан
    1 комментарий
  • Писать типы вначале или рассчитывать на вывод типов компилятором?

    Никакой религии в этом вопросе нет и быть не может. Есть вполне конкретные правила, когда писать типы весьма полезно.

    Если вы НЕ указываете тип, и рассчитываете на автовывод, то значит вам нужен не какой-то конкретный тип, а ТАКОЙ ЖЕ, КАК И... где-то ещё. Например, такой-же-как тип константы или такой-же-как тип возвращаемого значения функции. Иными словами, если я пишу:
    const id = findIdByName("abc");
    то мне не так важно, какой конкретно тип будет иметь id, мне важно чтобы это был тип возвращаемого значения функции "findIdByName". Для меня это приоритетно. Более того, если в какой-то момент тип возвращаемого значения у этой функции поменяется, то этот код продолжить компилироваться и, вероятно, даже РАБОТАТЬ (это зависит уже от того, что мы потом собираемся делать с id).

    Совершенно противоположная ситуация - интерфейсы. В широком смысле. Интерфейсы функций, интерфейсы классов, интерфейсы в смысле типов данных, создаваемых с помощью "interface". Особенно если эту функцию/класс/интерфейс использует много кто ещё. Тогда наоборот, вам НЕЛЬЗЯ допустить, чтобы типы параметров или тип возвращаемого значения просто так поменялись. Это вдвойне важно, если вы пишите библиотеку и речь идёт о её публичном интерфейсе - любое изменение интерфейса тогда должно подкрепляться версионированием (например, семантическим). Вы не можете просто так, тем более по недосмотру, вместо числа начать возвращать из функции строку - вы сломаете ваших клиентов, причём даже не знаете как и где.
    Ответ написан
    Комментировать
  • В чём разница в работе .then() у двух промисов?

    GlazOtca
    @GlazOtca
    Не в бровь, а в глаз!
    Представьте, что вместо консольлога вы передаете функцию fn
    Теперь, смотрите:
    1
    .then(fn())
    2
    .then(()=>{fn()})
    Понятна ошибка? В первом случае нужно было передать указатель на функцию, а мы её сразу вызвали fn(), правильнее было так:
    .then(fn)
    То же самое происходит и с консольлогом.
    Ответ написан
    1 комментарий
  • Как добавить в todo лист дефолтные дела?

    yarkov
    @yarkov Куратор тега JavaScript
    Помог ответ? Отметь решением.
    Добавьте к функции createTodoApp третий опциональный аргумент

    Там уже 3 аргумента. А вообще это некрасиво, когда приносят свои задания, а это именно задание.
    Ответ написан
    Комментировать
  • Как написать подобный функционал на node js (express)?

    bingo347
    @bingo347 Куратор тега Node.js
    Crazy on performance...
    node.js и express тут не причем, а вот что при чем - так это БД, а Вы не указали, какую БД используете.
    В большинстве БД, которые умеют unique, используют для этого индексы, а индексы можно строить не только по 1 полю, но и по группе полей. В вашем случае unique index должен состоять из двух полей - user_id и task_id, что сделает их уникальными именно в паре.

    P.S. мне кажется не очень хорошая идея давать юзеру самому задавать id, особенно для тех сущностей, что юзер может создавать более одной.
    Ответ написан
    Комментировать
  • Как достовлять проджект на тест, на прод и к чертовой матушке?

    BorLaze
    @BorLaze
    Java developer
    три ветки в гите - дев, тест и мастер
    CI/CD

    вся локальная разработка базируется на ветке дев

    как только фича закончена, мержим ее в тест
    CI/CD настроен так, что по новому пушу в тест он выкладывает новую ветку на сервер
    тестируем ее на тест-сервере

    когда фича протестирована, мержим ее в мастер
    CI/CD настроен так, что по новому пушу в мастер код выкладывается на прод

    начинаем цикл по-новой
    Ответ написан
    Комментировать
  • Почему в useState не приходит значение? Ассинхронщина?

    Alexandroppolus
    @Alexandroppolus
    кодир
    в useState приходит statusText, но useState запоминает его только первый раз, при создании компонента. После чего есть два статуса - тот, который в useState, и тот который в редуксе. И они никак не взаимодействуют между собой. Т.е. когда getStatusThunk обновляет статус в редуксе, статусу состояния на это пофиг.
    Тут надо определиться - либо юзать только редуксовый статус, либо синхронизировать их между собой. Зависит от задачи.
    Ответ написан
    2 комментария
  • Как заставить svg взаимодействовать с onMouseMove?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Для движения лучше менять атрибут transform группы со зрачком.
    Маской сделать видимость зрачка только внутри формы глаза.

    CSS правила обычных HTML-элементов для элементов SVG не работают.
    Ответ написан
    1 комментарий
  • Почему появляется бесконечный цикл в моем коде?

    Alexandroppolus
    @Alexandroppolus
    кодир
    Судя по всему, ошибка выскакивает в каком-то другом, классовом компоненте.
    Здесь вижу такую проблему: window.location меняется в рендере, что совсем неправильно. Это должно происходить в useEffect
    useEffect(() => {
      window.location = location.pathname + '#' + lang;
    }, [location.pathname, lang]);
    Ответ написан
    2 комментария
  • Почему присылает профиля всех хотя указанно where user_id?

    Vindicar
    @Vindicar
    RTFM!
    1. Потому что условие "WHERE {user_id}" будет истинным для любых ненулевых user_id. Тебе нужно условие WHERE id = {user_id} (предполагая, что колонка с id пользователя называется id).
    2. С поправкой на то, что это тебе на самом деле не нужно. НИКОГДА не создавай запросы через подстановку значения в строку, слишком легко ошибиться или поймать sql-инъекцию. Перепиши запрос на использование prepared statements.
    cursor.execute("SELECT money, biz, profitbiz, profitkaz, losemoneykaz, moneykaz FROM users WHERE id = ?", (user_id, ))
    Вместо каждого ? в запросе будет подставлен элемент из кортежа параметров. При этом движок сам позаботится о правильном экранировании.
    3. Переподключаться к БД каждый раз при вызове команды - плохая идея. Создай подключение при запуске бота и используй его. Максимум - создавай новый cursor для вызова команды.
    Ответ написан
    1 комментарий
  • Как исправить ошибки возникающие при поднятии/установке сайта с помощью Docker?

    gscraft
    @gscraft
    Программист, философ
    Вы собираете решение на основе некого полу-любительского Docker-образа. По ссылке на github видно, что автор(ы) репозитория страдает некой манией велосипедных дел, и создал свои контейнеры на все про всё, и при этом давно их не обновляет. Если хотите решение на базе Docker, то стоит быть готовым к тому, что такое решение нужно сопровождать, т.к. сторонние нестабильны. Поэтому желательно разобраться в базовых образах nginx / php / базы данных, чтобы завести это все вручную и самостоятельно, с уверенным пониманием процесса. В официальных хабах есть все необходимые инструкции: как устанавливать пакеты, как задать стартовые настройки через окружение или шаблонные значения. Это займет время, конечно, день-два, но окупится как в данном проекте, так и в дальнейшем. Эти контейнеры систематически обновляются и имеют лучшую совместимость, в противоположность случаю, когда что-то отваливается у авторов 10+ контейнеров, неспособных их сопровождать (в чем проблема и сейчас: не хватает расширения, автор не предусмотрел / забросил, подложив проблему своим пользователям). В Вашей ситуации нужно также ознакомиться со списком требований Drupal, и развернуть требуемый Dockerfile для PHP (через Alpine и встроенную систему установки расширений или Debian / ppa)
    Ответ написан
    1 комментарий
  • Когда в проекте лучше исользовать для сбокри gulp, а когда webpack?

    verkhoturov
    @verkhoturov
    HTML-Верстальщик / Frontend Developer
    Если очень коротко:
    Gulp - когда нужно сделать просто верстку и немного js.
    Webpack - когда нужно сделать веб-приложение.

    Тема холиварная и поднималась уже много раз
    Отличия webpack и gulp?
    Зачем нужен Gulp/Webpack?
    Чем webpack лучше gulp/grunt?
    Ответ написан
    Комментировать
  • Почему не срабатывает селектор смежных элементов?

    @cheeroque
    Потому что он работает только вперёд.
    Ответ написан
    Комментировать
  • Как словить событие mouse2?

    fallus
    @fallus
    https://developer.mozilla.org/en-US/docs/Web/API/E...

    document.body.addEventListener('contextmenu', e => {
      e.preventDefault();
    });
    Ответ написан
    Комментировать
  • Как сделать ответ на неизвестный метод?

    alex4answ
    @alex4answ
    405

    Код состояния протокола HTTP 405 Method Not Allowed, указывает, что метод запроса известен серверу, но был отключен и не может быть использован. Два обязательных метода GET и HEAD никогда не должны быть отключены и не должны возвращать этот код ошибки.

    Сервер ОБЯЗАН сгенерировать поле заголовка Allow в ответе с кодом 405, которое содержит список текущих доступных методов ресурса.

    P.S. разве express не реализует это из коробки?
    Ответ написан
    Комментировать