• Как обезопасить такой get запрос?

    @AlexVWill
    Пойми следующую простую логику: JS это код выполняемый на клиенте. Т.е. по большому счету все, что делает JS - делается полностью на совести клиента, в открытую, и клиент может полностью рулить процессом. Тем более, что у тебя данные не через POST передаются, а через GET (хотя большой разницы в данном случае нет), т.е. полностью открытым образом, поэтому пользователь может в строке браузера поставить что угодно. Поэтому, если ты хочешь что-то защитить, т.е. генерировать какой то код - переноси его генерацию на сервер. Ну или делай двухфакторную модель, т.е. часть генерится на сервере, часть на клиенте, и без сопоставления с серверною частью на сервере клиентская часть смысла не имеет.
    Ответ написан
    Комментировать
  • Как найти минимальное значение в строках матрицы?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Почти правильно решили.
    В коде надо четко понимать, что есть что.

    Math.min() возвращает минимальное значение среди переданных ему.
    Т.е. надо в скобки Math.min() положить несколько значений, из которых он выберет одно, минимальное.

    В задании просят найти минимальное в каждой строке. Значит, в Math.min() надо передать все значения из очередной строки.

    Обычно Math.min() принимает варианты через запятую: Math.min(1, 3, 5), но у нас каждая строка это массив вроде [1, 3, 5] Массив удобно «распаковать» с помощью трёх точек ... (так называемый оператор расширения). Есть очередная строка в массиве arr – передать её в Math.min(...arr) – вернёт минимальное значение.

    Сейчас внешний цикл for() перебирает у вас как раз строки двумерного массива. То, что надо.
    Вложенный цикл уже и не нужен.

    P. S. минимальное значение можно искать и перебором, со вторым, вложенным циклом for() как у вас. Это длиннее, но тоже работает, особенно на больших объёмах данных. В таком варианте надо бы убрать Math.min() в конце.

    В каждой итерации инициализировать s не в 0, а в константу Number.POSITIVE_INFINITY – больше её точно ничего не будет, все значения окажутся меньше. А дальше сравнивать текущее значение s с очередным числом из строки. И если очередное оказалось меньше — переназначать s это значение, очередной найденный минимум.

    spoiler
    document.write(
      mass.map(row => Math.min(...row)).join(', ')
    ); // 2, 4, 7
    Ответ написан
    Комментировать
  • Откуда берутся функции play() и pause() в теге video?

    Natebash
    @Natebash
    React, Vue, Angular, Navite JS, Python / Node JS
    https://developer.mozilla.org/en-US/docs/Web/API/H...

    Это стандартные апи методы для управления медиаконтентом. В доке все описано.
    Ответ написан
    1 комментарий
  • Как правильно находить готовые коды, плагины на разных языках?

    Ответ на ваше уточнение.
    а соединять куски программ или целеком в зависимости от ТЗ уже кем то написаные?

    На сегодняшний день это и есть основная работа большинства разработчиков. Они берут "куски программ", т.е. сложные, отлично написанные библиотеки, и соединяют их в зависимости от ТЗ. Если задача типовая - под неё уже наверняка кто-то написал или пишет библиотеку (вот такие программисты ленивые и изобретательные), если задача НЕтиповая, т.е. её решение нужно и ценно только ВАМ - ну тогда логично, что за вас её никто ещё не успел написать. Огромное количество задач в разработке ПО уже решено с помощью библиотек. По сути в каждом новом проекте вы пишете лишь небольшой кусочек кода, который решает именно вашу задачу. ОСОБЕННО это касается всяких стартапов и PoC, которые по сути и есть склеивание библиотек плюс небольшой кусочек бизнес-логики для демонстрации идеи.

    я думаю должно быть достаточно много хорошего кода... в открытом доступе.

    Ну да, его много. Это всё - библиотеки.

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

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

    Существует много готовых кодов, частей программ или целиком

    Вам нужно понять, что фрагмент готового кода, особенно если он достаточно крупный (не 10 строк, а, допустим, 10 тысяч строк) ценен тогда, когда у него есть хорошо описанный интерфейс (API) и хорошо поставленные требования к нему, который этот код выполняет. Это всё и есть часть определения понятия "библиотека".
    А если у вас в распоряжении трёхстраничный gist на гитхабе, то фиг вы его куда прикрутите, пока не разберётесь, что там написано. А с учётом того, что идеально этот кусок кода всё равно вам не подойдёт, то ещё и выяснится, что проще с нуля написать.
    Ответ написан
    1 комментарий
  • Как понять что делает данный код php?

    v3shin
    @v3shin
    Веб-шаман
    Навскидку код развернулся в
    <?php
    $OO000O0000 = file(preg_replace("@\(.*\(.*$@", "", __FILE__));
    if (preg_replace("@\(.*\(.*$@", "", __FILE__) == __FILE__ or preg_replace("@\(.*\(.*$@", "", __LINE__) != 3)
        die("<tt>ERROR");
    function OOOO0000O0($a, $b)
    {
        if ($b == 162) {
            $d = substr($a, 1303, 8);
        } elseif ($b == 13) {
            $d = substr($a, 973, 330);
        } elseif ($b == 40) {
            $d = trim(substr($a, 1311));
        }
        return $d;
    }
    eval(base64_decode(OOOO0000O0($OO000O0000[0],13)));
    eval(OOOO0OOO0O(OOOO0000O0($OO000O0000[0],40),OOOO0000O0($OO000O0000[0],162),$OO000O0000));
    __halt_compiler();
    [binary]

    Дальше, как я понял, скрипт вырезает, декодирует и выполняет куски из [binary], туда я не лез. В общем, можете покопаться, но ЗАПУСКАТЬ НЕ СОВЕТУЮ.
    Ответ написан
    Комментировать
  • С чего начать системному администратору в школе?

    paran0id
    @paran0id
    Умный, но ленивый
    Системному администратору всегда нужно начинать с инвентаризации
    Ответ написан
    Комментировать
  • С чего начать системному администратору в школе?

    @Drno
    1. - беги оттуда... работы дохера, денег нифига
    А по теме -

    надо создать "карту" сети, где будут ПК которым нужен доступ, спланировать прокладку сети.
    далее можно поделить участки на "квадраты", чтобы приводить туда 1 кабель и ставить свитч, а не вести кучу проводов до каждого ПК
    после этих подсчетов возвращайтесь - будем подбирать оборудование
    Ответ написан
    10 комментариев
  • Как убрать дубли в запросе sql?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    Этот вопрос на тостере уже во множестве вариантов с решениями.
    Вторую пару не нужно создавать: T2.value > T1.value
    Ответ написан
    Комментировать
  • Как сменить формат большому количеству файлов?

    @stavfz
    Открываем командную строку например написав в поиске меню пуск cmd
    переходим в нужную нам директорию с помощью команды
    cd C:\НАША_ПАПКА
    Нажимаем Enter
    если вы уверенны что находитесь там где нужно вводим следующую колманду
    rename *.bin *.exe
    ну и как бы всё
    Ответ написан
    1 комментарий
  • Как сменить формат большому количеству файлов?

    @alexalexes
    1. Открыть командную строку.
    2. С помощью команд смены диска, смены каталога выбрать текущий каталог, в котором нужно произвести переименование.
    3. Запустить команду:
    FOR /R %f IN (*.bin) DO REN "%f" *.exe
    которая переименует все файлы в текущем каталоге, в том числе и во вложенных тоже.
    Ответ написан
    Комментировать
  • Интересная задача на js?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Решение не верно, т.к. расчитывает только на эти 4 имени. Что, если там будут другие?

    Алгоритм:
    1. составить объект, где ключи – имена, а значения – счётчики, сколько раз имя встретилось.
    2. после полного подсчёта, найти максимум и минимум счётчиков.
    3. собрать имена, у которых счётчик равен максимуму или минимуму. Каждого, теоретически, может оказаться больше одно, поэтому – в массивы имён.
    4. пройти по всем ключам объекта со счётчиками, и исключить имена, которые есть среди макс и мин. – останутся «остальные».


    spoiler
    const mostLeastAndTheRest = names => {
      const dict = names.reduce((acc, name) => ((acc[name] ??= 0), acc[name]++, acc), {});
      // { "Женя": 3, "Иван": 1, "Виктор": 4, "Константин": 1 }
    
      const values = Object.values(dict);
      const max = Math.max(...values);
      const min = Math.min(...values);
    
      const entries = Object.entries(dict);
      const winners = entries.filter(([_, value]) => value === max).map(([key, _]) => key);
      const losers = entries.filter(([_, value]) => value === min).map(([key, _]) => key);
      const rest = Object.keys(dict).filter(name => !winners.includes(name) && !losers.includes(name));
      return { winners, losers, rest };
    };
    
    mostLeastAndTheRest(['Женя', 'Женя', 'Иван', 'Женя', 'Виктор', 'Виктор', 'Константин', 'Виктор', 'Виктор']);
    /*
    {
      "winners": [ "Виктор" ],
      "losers": [ "Иван", "Константин" ],
      "rest": [ "Женя" ]
    }
    */


    Ещё вопрос — особый случай, если всех одинаковое число, то все – «победители» или «проигравшие» ?
    Ответ написан
    1 комментарий
  • Как выполнять скрипт php в фоне?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Это называется не "в фоне" а по расписанию.
    И теперь, зная правильное название, можно легко найти ответ поисковиком
    Ответ написан
    Комментировать
  • Какой оптимальный алгоритм для однозначного определения слагаемых в сумме?

    @Akela_wolf
    Extreme Programmer
    Самое простое - шифруйте последние 2 цифры номера заказа как копейки в сумме платежа. Или 3 цифры - как последняя цифра рублевой суммы + копейки. Уникальности не будет, но сократить количество кандидатов в 100-1000 раз может оказаться вполне достаточно для вашей задачи.

    Но это такое себе решение. Вообще у наложенного платежа (а бланк наложенного платежа, по идее, готовите вы как отправляющая сторона) есть поле "назначение". И почта обязана вам его отдавать вместе с платежом. Что мешает вписать в назначение номер заказа в вашей системе? "Оплата заказа #XXX-YYY-ZZZZ" или как-то так.
    Ответ написан
    Комментировать
  • Как реализовывать "разные версии одного кода"?

    Vextor-ltd
    @Vextor-ltd
    Webdeveloper
    Да что тут можно придумать? Создаешь один общий класс для всех трёх типов пользователей, затем делаешь 3 класса наследника, расширяющих общий для всех класс. Ну и таким образом в зависимости от того, какой тип пользователя зашёл на сайт, делаешь инстанс соответствующего класса и работаешь с его методами.
    Ответ написан
    2 комментария
  • Linux Mint простейшее приложение для защиты глаз?

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

    Vindicar
    @Vindicar
    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 комментариев
  • Инициализировать параметры в JavaScript?

    Kozack
    @Kozack
    Thinking about a11y
    const args = {slidesToShow: 2}
    
    const defaultValues = {
      container: '.carousel',
      slidesToShow: 4,
      slidesToScroll: 1,
    }
    
    const resolved = Object.assign({}, defaultValues, args)
    //  { container: ".carousel", slidesToShow: 2, slidesToScroll: 1 }
    Ответ написан
    Комментировать
  • А существует ли что-то типа Git для БД (MySQL) - мне нужно понять как скрипт меняет содержимое БД не копаясь в самом скрипте?

    Придется сделать 2 базы - оригинальную и после изменений.

    После этого есть варианты:
    Можно воспользоваться mysqldbcompare в режиме --changes-for

    Или попросту сделать два дампа и сравнить их
    mysqldump --skip-comments --skip-extended-insert -u user database1 > file1.txt
    mysqldump --skip-comments --skip-extended-insert -u user database2 > file2.txt
    diff file1.txt file2.txt


    Ну или включить Audit Log в mysql и посмотреть по нему какие изменения будут вноситься.

    + https://liquibase.org/

    + Здесь в самом вопросе перечислено пяток инструментов https://stackoverflow.com/q/225772

    И кажется Mysql Workbench может сравнивать.
    Ответ написан
    2 комментария
  • Как запитать радиоприёмник от повербанка?

    @VT100
    Embedded hardware & software.
    Можно. 5 В с выхода банка соответствуют разряду элементов питания приёмника до 1,25 В на каждый. А работоспособность должна сохраняться до 4 В. Вероятнее всего - да, чёрный минус и красный плюс.
    Но не нужно, может "забиться" шумом от банка. Лучше - от батареек.
    Ответ написан
    Комментировать