Задать вопрос
  • Почему у провайдера действует белый IP только в сети самого провайдера?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    А давайте не пользоваться жаргонизмами. Заказывайте просто услугу
    Статический внешний IP-адрес
    если на него нельзя достучаться снаружи то это уже какая-то фигня а не услуга.
    Так как статику заказывают для доступа из вне.

    А то как такая услуга называется у конкретного провайдера дело десятое.
    Если снаружи пакеты не доходят, то услуга не оказана.
    Провайдер может резать трафик на порты простых веб служб в целях вашей же безопасности. Например на порт smtp. Тогда надо задать вопрос / просьбу не заботиться о Вас. А пропускать весь-весь трафик, но лучше обсудить режут и если да, то что конкретно. И просить не резать нужное
    Ответ написан
    22 комментария
  • Как развернуть веб приложение node js на виртуальном сервере для работы в телеграм боте?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    Вам требуется установить и настроить на вашем сервере SSL сертификат. Используйте certbot плюс nginx как веб-сервер.
    Ответ написан
    5 комментариев
  • Как сделать аутентификацию на сайте через телеграм?

    CoDeR2006
    @CoDeR2006 Автор вопроса
    TS
    И так, для меня в будущем, и для тех кто это нагуглил:

    Дело в том что без виджета на начало 2024 сделать авторизацию практический не возможно, вот реально правильное решение если у вас похожий стэк, и вы планируете делегировать саму регистрацию на сервер, а не делать все через front.

    Интегрируем виджет в приложение react + ts:
    (это если вам надо что бы был не редирект, а вызов функции со стороны telegram)
    import { useEffect } from 'react'
    import { ITelegramUser } from '../../../../types/telegram/api-telegram-user.ts'
    
    declare global {
      interface Window {
        onTelegramAuth: (user: ITelegramUser) => void
      }
    }
    
    export const ButtonTelegramAuth = () => {
      useEffect(() => {
        const button = document.createElement('script')
        button.async = true
        button.src = 'https://telegram.org/js/telegram-widget.js?22'
        button.setAttribute('data-telegram-login', 'name_bot')
        button.setAttribute('data-size', 'large')
        button.setAttribute('data-radius', '20')
        button.setAttribute('data-onauth', 'onTelegramAuth')
    
        document.body.appendChild(button)
    
        window.onTelegramAuth = function (user) {
          alert(
            'Logged in as ' +
              user.first_name +
              ' ' +
              user.last_name +
              ' (' +
              user.id +
              (user.username ? ', @' + user.username : '') +
              ')'
          )
        }
    
        return () => {
          document.body.removeChild(button)
        }
      }, [])
    
      return <div id="telegram-widget-container"></div>
    }


    если нужен все таки редирект мы добавляем такое поле:
    script.setAttribute('data-auth-url', 'https://site.pw');

    и удаляем это:
    button.setAttribute('data-onauth', 'onTelegramAuth')
    
    declare global {
      interface Window {
        onTelegramAuth: (user: ITelegramUser) => void
      }
    }
    
     window.onTelegramAuth = function (user) {
          alert(
            'Logged in as ' +
              user.first_name +
              ' ' +
              user.last_name +
              ' (' +
              user.id +
              (user.username ? ', @' + user.username : '') +
              ')'
          )
        }


    И так объясняю в чем задумка:
    В ваше приложение react интегрируется все тот же виджет, но правильным образом. После нажатия на виджет происходит авторизация пользователя (он вводит свои данные / просто нажимает войти). Потом телеграм передает все его данные вам (в функцию - №1 способ / по get параметрам в url). Если вы делегируете
    регистрацию на сервер (а так правильно) то выбираете 2 способ. Сервер получает данные валидирует их и заносит в БД, затем делает редирект вашего пользователя к вам обратно на front, и заносит token (или что там еще не разобрался) в HttpOnly Ckookie. Ну а далее в моем случае Guard будет проверять есть этот token или нет, годен он или нет.

    Передаю привет Максиму в будущем. Как дела Макс ?
    Ответ написан
    9 комментариев
  • Как правильно закрыть всё и открыть только необходимое(входящий\исходящий) iptables и debian?

    @enixpp
    # Разрешит локалный траффик
    iptables -A INPUT -i lo -j ACCEPT
    
    # Разрешит пинг
    iptables -A INPUT -p icmp -j ACCEPT
    
    # разрешит порты 21,22,25,80,81,443
    iptables -A INPUT -p tcp -m multiport --port 21,22,25,80,81,443 -j ACCEPT
    
    # Разрешит сессии
    iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT 
    
    # ну и запретит все остальное
    iptables -A INPUT -j DROP
    Ответ написан
    8 комментариев
  • 6/2(1+2) =? (простой вопрос по школьной программе)

    PaukCher
    @PaukCher
    Прежде всего хочу напомнить, что в советской школе нас учили, что есть разница между умножением со знаком и без знака. А разница состоит в том, что при умножении без знака произведение рассматривается как цельная величина. На бытовом уровне, если 2а это литр жидкости, то 2×а это два пол-литра жидкости.
    Рассмотрим пример:
    2а:2а=1
    при а=1+2
    2(1+2):2(1+2)=6:2(1+2)=6:6=1
    Для тех, кто не помнит этого правила, предлагаю решить пример на понимание:
    59d60ca479d1f224968147.jpeg
    Этот пример из «Сборника задач по алгебре», Часть I, для 6-7 классов. (П.А. Ларичев)
    В интернете можно скачать его бесплатно и убедиться в моей правоте.
    Исходя из вышесказанного 6:2(1+2)=1

    И вот что я ещё нашёл недавно:
    В пособии для математических факультетов педагогических институтов по курсу методики преподавания математики, по которому учили наших преподавателей алгебры в педагогических ВУЗах Советского Союза, однозначно сказано, что в алгебре знак умножения связывает компоненты действия сильнее, чем знак деления. А тот факт, что в спорном примере знак умножения опущен, говорит о том, что спорный пример алгебраический.
    5a5dbb4596aed550405876.jpeg
    По нижеприведённой ссылке Вы можете скачать:
    Методика преподавания алгебры, Курс лекций, Шустеф М. Ф., 1967 г.
    https://russianclassicalschool.ru/biblioteka/matem...
    Приложенный мной текст на 43-й странице пособия.

    Так что, для тех, кто хорошо учился в советской школе 6:2(1+2) = 1
    Ответ написан
    11 комментариев
  • Как из одной ветки перенести определённые файлы в другую ветку?

    @aol-nnov
    git checkout otherBranch -- path/to/file

    но это только содержимое файла с края otherBranch, никакой истории изменений.
    Ответ написан
    Комментировать
  • Почему не работает?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    https://developer.mozilla.org/en-US/docs/Web/CSS/:...

    1. Применяется только к ссылкам и area
    2. Не все стили применяются (в целях конфиденциальности), тень в список разрешенных не входит.
    Ответ написан
    2 комментария
  • Как посмотреть содержимое TTF?

    @Maxim_Q
    Тут можно шрифт загрузить и посмотреть все символы внутри https://fontdrop.info/
    Ответ написан
    1 комментарий
  • Можно ли отлаживать telegram web app?

    @Redeve
    Веб-макаке не хватит и 640гБ
    Ответ написан
    Комментировать
  • Как сделать auto width для поля input?

    premas
    @premas
    Full-stack web-developer
    В одну строку и без зависимостей это делается так:
    <input type="text" onkeydown="this.style.width = ((this.value.length + 1) * 8) + 'px';">
    Ответ написан
    2 комментария
  • Что быстрее 10 запросов к файлам или 10 к базе?

    @sergey_privacy
    Админ со стажем, начинающий DevOps
    На Ваш вопрос нет однозначного ответа. Аналогично вопросу: что быстрее, поезд или автомобиль? Кто то будет сравнивать советский поезд с бугатти, другой будет сравнивать японские скоростные поезда с жигуленком.

    Базы с поддержкой SQL бывают разные: MySQL, MsSQL, Oracle и т.д. У каждой из них своя методика работы с кэшем, индексами, памятью. Очень многое зависит от размеров базы, размеров таблиц, построения индексов, самого запроса, настроек сервера БД и операционки. Если база нормально сконфигурирована, таблицы с нормальной архитектурой, правильно построены индексы, сервер обладает достаточным количеством памяти, то запрос будет быстрее большинства самопальных решений для работы с файлами.

    Если же файлы проектировала группа высококлассных специалистов, обвязка спроектирована именно под такие запросы, то выигрыш по скорости может быть значительным в этом варианте. Но такой "путь самурая" предполагает перенос объема вычислений в более быструю область сервера: память-процессор. У тебя будет меньше работа с дисковой системой, но вся логика работы приложения должна быть перелопачена под такой вид данных. Без фундаментальных знаний алгоритмов программирования и математики-информатики в целом, такие велосипеды лучше не городить. Теория графов, матрицы, хеши, алгоритмы сортировки должны быть у тебя на уровне выше институтского. Про удобные таблицы на 5-10 полей можешь забыть. У тебя будет куча небольших упорядоченных файлов со списками ключ-значение. Индексы, хеши, хеши по хешам, индексы по хешам и т.д. - это на долгое время будет твой кошмар, который ты должен будешь представлять у себя в голове. Работа с файлами напрямую не имеет смысла, если ты не планируешь создавать высоконагруженное приложение с большими объемами данных. В этом случае у тебя проработка архитектуры хранения данных займет на порядок больше времени, чем проработка архитектуры базы. Предварительный поиск по одному символу, по двум, трем, ссылка на файлы, которые содержат следующую часть, по которой уже идет поиск. Не забудь блокировки файлов, обработку ошибок доступа, обработку оборванных транзакций, уникальность значений, индексов или ключей и т.д. Отсутствие удобных select-ов с join-ами и блэкджеком потребует от тебя проработки возможных видов запросов, чтобы сам вид хранения данных оптимизировать под кастрированные возможности. А из запросов будут только аналоги простейших "SELECT xxx FROM file_yyy WHERE Id=zzz", "UPDATE file_xxx SET yyy WHERE Id=zzz", "INSERT INTO file_xxx yyy=zzz", "DELETE xxx FROM file_yyy WHERE Id=zzz". Этими 4-мя операциями тебе придется обходиться.

    Сейчас есть уже готовые "велосипеды" noSQL, но это не "путь джедая". Типовой сайтик, с десятком или сотней уников в час не стоит такого геморроя.
    Ответ написан
    Комментировать
  • Есть ли нормальный способ получить все поля модели Eloquent, без чтения из базы?

    JhaoDa
    @JhaoDa
    LaravelRUS Team
    Нет.

    Только описывать их в модели аннотациями/атрибутами и держать этот список в актуальности. Или вот ide-helper умеет добавлять докблок со свойствами, который парсит из БД. Но всё это разной степени костылизация.
    Ответ написан
    Комментировать
  • Из-за чего ошибка 419 (unknown status)?

    @empirikk
    У меня рабочая схема, без form выглядит, не вдаваясь в детали, вот так:
    HTML:
    <div>
    @csrf{{--эта конструкция преобразуется в input c именем _token, пример: <input type="hidden" name="_token" value="tyiV5lsNJy9aA245dke7979aW1otyutV5D">--}}
    <input class='text' type='text'>
    <input type='submit'>
    </div>


    JQuery:
    let someV = $('.text').val();
    let token = $("input[name='_token']").val();
                    $.ajax({
                        type: 'POST',
                        url: '/someurl',
                        data: {
                           '_token': token,
                            "someV" : someV
                        },
                        success:function (res){
                            console.log('F**k yeah');
                        }
    
                    })

    Надеюсь кому-нибудь поможет)
    Ответ написан
    1 комментарий
  • Всегда, когда усилитель повышает своё питание, блютуз модуль начинает думать что садиться акумулятор и отвлекает. Можно как то избавиться?

    @Oleg1345140
    как вариант добавить в схему диод и электролит, диод в разрыв цепи между блютуз и аккумулятором, электролит поле диода параллельно блютузу, диод не даст усилителю вытянуть электролит, электролит даст питание блютузу на время просадки аккумулятора
    Ответ написан
    Комментировать
  • Можно припаять jack 3.5 стерео на один наушник?

    @nehrung
    Не забывайте кликать кнопку "Отметить решением"!
    Теоретически запараллеливать нельзя, на практике - в вашем конкретном случае можно.
    Почему в теории нельзя? Потому что теоретически может случиться такой стереосигнал, когда по каналам будут выданы на выход строго противофазные сигналы. А это хуже чем КЗ, поскольку оба выходных каскада УЗЧ будут работать друг против друга.
    Почему на практике можно? Да потому, то выходная мощность на наушнике - несколько милливатт, от такой мощности ничего не выгорит даже в наихудших условиях. Есть и вторая причина: вероятность появления вышеописанного опасного противофазного стереосигнала исчезающе мала. Чтобы он появился, это какой-то недоброжелатель должен совершить специальную диверсию против вашего усилителя - раздобыть стереогенератор, подключить, да ещё устроить всё это во время вашего отсуствия.
    Ответ написан
    Комментировать
  • Можно ли подключить 4 кулера к простой зарядке?

    @VT100
    Embedded hardware & software.
    Да.
    Но вентиляторы не "дают", а "потребляют". И не 1,8 А, а 2 А.
    Ответ написан
    Комментировать
  • Как дождаться выполнения dispatch'а с передачей в него async action в redux?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    Если вы хотите дождаться выполнения асинхронных вызовов в асинхронных функциях, то их надо делать с использованием ключевого слова await. Вызовы dispatch с передачей обычных объектов действий выполняются синхронно.
    const someCall = () => async dispatch() => {
      dispatch({type: Constant.SOME_OPERATION_1});
      await dispatch(createAccount());
      dispatch({type: Constant.SOME_OPERATION_2});
    };

    export const createAccount = () => async (dispatch) => {
      await request api;
      dispatch({type: SMTH});
      await another request api;
      dispatch({type: SMTH2});
    }


    Так же для обработки неудачных ответов сервера можно использовать try/catch:
    export const createAccount = () => async (dispatch) => {
      try {
        await request api;
        dispatch({type: SMTH});
        await another request api;
        dispatch({type: SMTH2});
      catch (e) {
        // handle error here
      }
    }
    Ответ написан
    2 комментария
  • На каком языке написан Python?

    suguby
    @suguby
    программист, python, django, mysql, git, hg, linux
    ответ в википедии
    https://ru.wikipedia.org/wiki/Python#.D0.A0.D0.B5....
    если в двух словах, то есть много реализаций, стоящий на большинстве систем CPython написан на С.
    Ответ написан
    1 комментарий
  • На каком языке написан Python?

    @VovanZ
    Есть разные реализации питона.
    Например:
    основная реализация - CPython написана на С;
    PyPy написан на RPython (их собственный диалект питона, созданный специально, чтобы написать на нём PyPy);
    Jython написан на Java.

    Подробнее про разные реализации питона можно прочитать здесь: habrahabr.ru/post/209812

    Библиотеки для питона написаны либо на C, либо на самом питоне.
    Ответ написан
    1 комментарий