Задать вопрос
  • Как запретить прямое скачивание файлов nginx?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Серверная часть приложения размещается в отдельном каталоге с ограниченными правами, а не в каталоге статических файлов, которые отдаются веб-сервером. Традиционно для бэкенда на сервере создаётся отдельный пользователь, от имени которого запускается NodeJS как сервис, а в его домашнем каталоге или в другом каталоге с ограниченными правами и размещается код бэкенда. Второй случай используется, когда доступ к данному каталогу нужен другим приложениям/сервисам. Например системе доставки и развёртывания.
    Ответ написан
  • GIT для 1C-Bitrix, как наладить процесс разработки?

    cyber-jet
    @cyber-jet
    Разработку рекомендуется вести в папке local, она может переопределят всё что есть в папке bitrix - почитать тут

    PS: Вообще это относится к документации по организации разработки там-же можно почитать про организацию контроля версий, композер.
    Ответ написан
    Комментировать
  • Как нарезать (монтировать стрим) и записывать одновременно?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Виртуальный монитор и на нём разместить окно браузера. Например: раз, два.
    Ответ написан
    Комментировать
  • API bot TG - Как мне узнать, на какой вопрос ответили?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    По-простому, костыльному, можно предполагать, что очередная реплика пользователя, которая не-команда типа /start (начать сначала) или какой-нибудь /edit (допустим, исправить последний ответ) – это ответ на следующий по порядку вопрос. В базе данных сохраняйте под id пользователя его ответы, заполняя каждый раз следующий пустой вопрос, например. Эт. совсем упрощенно-колхозно.

    Для адреса, наверное, можно предлагать не вводить название, а тыкнуть точку на карте — прислать location, как вариант.

    По-крутому, можно сделать нормальное веб-приложение, хороший интерфейс, форму с полями, валидацией и подсказками. См. WebApp в Telegram.
    Ответ написан
    Комментировать
  • Как обратится к значению proxy(object)?

    @eminsk
    программирую на python
    Проблема в том, что filter() возвращает массив объектов, даже если найден только один элемент. В твоем случае test - это массив с одним объектом Proxy(Object), а не сам объект.
    Чтобы получить доступ к свойству hours, тебе нужно обратиться к первому (и единственному) элементу массива:
    const test = this.ArrBookingHours.filter((hour) => hour.date === day.toDateString())
    console.log(test)
    console.log(test[0].hours)

    строка console.log(test[0].hours) - это обращение к первому элементу массива

    Еще есть компактнее с использованием find и опциональной цепочки:
    const booking = this.ArrBookingHours.find(
      hour => hour.date === day.toDateString()
    )
    
    console.log(booking?.hours ?? 'Нет записи на эту дату')


    Используя этот способ - можно избежать ошибки Cannot read property 'hours' of undefined, если нет ни одного совпадения.
    Ответ написан
    Комментировать
  • Как сохранять группу товаров при обмене?

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

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    const type_input = document.getElementById("type_input").value;
    const type_name = ['фильм', 'сериал', 'мультсериал', 'мультфильм', 'аниме'];
    const type_idx = type_name.indexOf(type_input);
    let type = 0;
    if (type_idx === -1) {
        alert('Добавьте или исправьте тип');
    } else {
        type = type_idx + 1;
    }

    А вообще, такое делается с помощью select, тогда невозможно ввести неправильное значение и весь этот код просто не нужен.
    И в целом, не используйте var, она размещает переменную в глобальной области видимости. Вместо этого используйте const или let, в зависимости от дальнейшей иммутабельности переменной.
    Используйте строгое сравнение. Нестрогое означает, что вы не уверены в типах данных.
    Ответ написан
  • Как можно сократить этот код?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    const type_input = document.getElementById("type_input").value.toLowerCase();
    const type_names = ['фильм', 'сериал', 'мультсериал', 'мультфильм', 'аниме'];
    const type_index = type_names.indexOf(type_input);
    let type = 0;
    
    if (type_index === -1) {
        alert('Добавьте или исправьте тип');
    } else {
        type = type_index + 1; // значение для базы данных (если нужно 1-based)
    }
    Ответ написан
    4 комментария
  • В какой контейнер ставить сертификат Lent`Encrypt в NGINX-front или NGINX-backend?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    Во первых для вашего определения того, что вы называете "фронт" есть официальный термин - реверс прокси.
    И конечно же сертификаты должны быть на нем.
    Ответ написан
    Комментировать
  • Могу ли я прогнать через password_hash пароли в бд, которые md5, чтобы не сломалась авторизация?

    @alexalexes
    Смену способа хеширования пароля вы можете провернуть только при участии каждого пользователя, в два этапа.
    1 этап.
    Делаете патч в функцию авторизации.
    Когда пользователь авторизуется, проверяете, что заполнено поле по хешу новой функции.
    Если оно заполнено по новой функции, то все проверки верности пароля проводите с ней, поле старой функции игнорируете.

    Если хеш по новой функции не заполнен, то проверяете, что пароль верен с точки зрения хеша старой функции. Если верен пароль, то записываете хеш по новой функции, так как у вас есть исходный пароль.
    Так вы накапливаете базу пользователей, которые часто заходят. И для них вы бесшовно меняете хеши.

    2 этап
    Когда число поменянных хешей примерно будет равно числу активных пользователей за определенный период, то в патче запрещаете пользоваться старым хешем для проверки паролей, отправляете пользователя принудительно восстанавливать пароль по другим учетным данным, например, по эл. почте.
    При восстановлении доступа пароль хешировать новой функцией.
    Все, с этого момента можно избавиться от логики использования старого хеша.
    Ответ написан
    Комментировать
  • Защищенный ТАЙМЕР для ограничения прохождения викторины по времени?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Элементарно же, когда пользователь начинает опрос, сохранять в БД запись, содержащую идентификатор опроса, идентификатор пользователя и время начала опроса.
    Ответ написан
    6 комментариев
  • Может ли суверенный интернет существовать в РФ с учетом того, что dns-записи во многих случаях хранятся на зарубежных ns-серверах?

    Hivemaster
    @Hivemaster
    Админ, который хочет программировать
    Первоисточник - это тот dns-сервер, адрес которого прописан у вас на сетевом интерфейсе. Ему ничего не мешает хранить хоть все доменные зоны у себя, как и не мешает в качестве корневых использовать произвольные сервера.
    Ответ написан
    Комментировать
  • Как работать с минифицированным JS?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    Никак. С кодом после минификации не надо никак работать. Минифицированный код предназначен для доставки его по сети максимально быстро на клиент. Для изменения кода вам следует вносить изменения в исходный код и уже только потом его минифицировать, а не наоборот. Если исходного кода нет - то пропускаете через любой деобфускатор и вручную восстанавливаете исходный код. Ну или пишете сами с нуля то же самое.
    Ответ написан
    2 комментария
  • Как использовать js плагин mysql в сборке gulp?

    Fzero0
    @Fzero0
    Вечный студент
    MySQL - это серверная технология, и прямое её использование в браузере невозможно
    MySQL работает только на сервере (Node.js), а не в браузере
    Вы пытаетесь через Webpack собрать MySQL для браузера?
    Ответ написан
    1 комментарий
  • Максимальная длина кабеля 5e?

    CityCat4
    @CityCat4
    Дома с переломом ноги
    Теоретически... на качественной медной одножилке... на хороших сетевках одной и той же конторы... можер быть заработает. Но гарантий никаких, сам понимаешь.

    Не сношай моск, юзай оптику и пару конверетров оптика->eth
    Ответ написан
    2 комментария
  • Нужна камера без аккаунта, можете подсказать варианты?

    @Komrus
    CIO в системном интеграторе.
    1) Лучше искать по словам "IP-камера" (по "веб-камере" будут попадаться всяике изделия с USB портом; а надо - с Ethernet)
    2) Убедиться, что поддерживает протокол ONVIF.
    3) Убедиться. что в описании нет слов "работа только с облаком ННН"
    4) Подумать - надо ли именно поворотную. Ибо парочка не-поворотных камер запросто может стоить дешевле.
    5) Подумать - нужны ли детекторы движения и т.п. (дабы начинать запись только по обнаружению движения; или - отправлять алярм)
    6) Нужна ли запись (если нет - только текущую ситуацию можно посмотреть; а начинает хотеться глянуть, что собакен делал пол-часа назад и где он взял то, что сейчас жуёт :)))
    7) Убедиться, что веб-морда камеры работает в современных веб-браузерах и не требует какого-то
    экзотического плагина для просмотра видео.
    Ответ написан
    2 комментария
  • Как оценить сложность проекта и найти грамотных исполнителей?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    Если для написания тз у вас не хватает компетенций, то для начала сделайте юзерстори и/или майндмап. Распишите все возможные действия пользователя + желательно самые простые картинки как это +- выглядит и как работает. Во первых оцEните объем работ, во вторых откроете для себя кучу нюансов различного характера, в третьих с этим уже можно идти к более-менее адекватной команде за ПРИМЕРНЫМ ценником.

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

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

    saboteur_kiev
    @saboteur_kiev Куратор тега Веб-разработка
    software engineer
    Оценить можно не идею. Оценить можно ТЗ.
    Если ТЗ подробное, достаточное чтобы по нему взять и работать, то оценить сможет любой разработчик, который имеет опыт в фрилансе (имеется в виду разработчик, который умеет посчитать работу в часах, потому что те, кто работает просто на зарплату, и задачи ему дают сверху, обычно не сможет быстро оценить).

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

    Вы вот можете предположить сколько стоит дом построить. Но вряд ли сходу скажете, сколько берет архитектор, который этот дом просчитывает, а архитектор собственно и делает основную часть ТЗ, по которой уже можно и стоимость материалов рассчитать и количество работы прикинуть.

    Короче наймите специалиста для составления ТЗ и ориентировочной стоимости. Может быть этот же специалист вам потом и задачу выполнит. А может посчитаете, что слишком дорого.
    Ответ написан
    Комментировать
  • Почему на домене загружается совсем другой сайт?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Судя по всему у вас неправильно настроен веб-сервер. Откройте настройки вашего веб-сервера, проверьте всё, найдите ошибки и исправьте их.
    Ответ написан
    2 комментария