• Как сделать появление второго select при выборе значения в первом html\php?

    Adamos
    @Adamos
    А РНР здесь и ни при чем. Для этого нужен javascript.
    Такая логика называется chained select. Для нее должен работать AJAX-запрос к серверу: в запросе город, в ответе - список серверов. Либо, если список не слишком велик, эти данные можно сразу включить в страницу и просто выбирать нужные по событию изменения первого select.
    Ответ написан
    5 комментариев
  • Как загрузить файл на сайт?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Комментировать
  • Какой язык программирования учить системному администратору?

    @Akina
    Сетевой и системный админ, SQL-программист.
    какой язык более универсальный для системного/сетевого администратора?

    Shell scripting - обязательно.
    А также любые другие языки, входящие в штатную поставку обслуживаемых ОС и ПО, включая встроенное ПО оборудования - по возможности и желанию. Но минимальное понимание - обязательно.

    К примеру написать бота в телеграмм, организовать вывод показателей с серверов на сайт, и запилить минимальное приложение для мониторинга под windows/android, не заморачиваясь над фронт-ендом.

    Вообще-то системный (тем более сетевой) администратор такой фигнёй не занимается.
    Ответ написан
    Комментировать
  • Логические операторы PHP: and, or vs &&, ||?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Поскольку у && приоритет выше, то традиционно выбирают его, чтобы потом не было неожиданностей, как во втором примере.

    Я, собственно, не вижу никакого удобства во втором случае.
    Код должен читаться на лету, без необходимости вчитываться и производить логические вычисления в голове с учётом приоритета выполнения операторов. А здесь мы видим эталонный говнокод, который надо переписать на
    $x = is_good();
    if($x and $y>0)

    Я оставил здесь AND для наглядности, но по-хорошему я бы заменил на &&, просто чтобы следовать единому стилю.
    Ответ написан
    1 комментарий
  • Насколько индекс ускоряет выборку с условием-неравенством?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега MySQL
    Будет ли этот запрос быстрее работать, если для столбца `time` есть индекс?
    Это покажет EXPLAIN, а ещё лучше - само выполнение запроса с индексом и без него. Скорее всего - будет.

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

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Давайте сделаем что-нибудь полезное. К примеру, определим, какой браузер использует тот, кто смотрит в данный момент нашу страницу. Для этого мы проверим строку с именем браузера, посылаемую нам в HTTP-запросе. Эта информация хранится в переменной. Переменные в PHP всегда предваряются знаком доллара. Интересующая нас в данный момент переменная называется $_SERVER['HTTP_USER_AGENT'].

    https://www.php.net/manual/ru/tutorial.useful.php
    Ответ написан
    Комментировать
  • Отслеживание новых записей в бд в реальном времени?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Самое простое - периодический запрос клиентом обновлённой информации.
    Более сложное - websocket + вызов скрипта из БД по триггеру AFTER INSERT.
    Ответ написан
  • Как защитить видео на сайте?

    sergiks
    @sergiks Куратор тега Веб-разработка
    ♬♬
    Делал сто лет назад проект с видеоуроками. На Амазоне в S3 лежали файлы, раздавались в плеер через CloudFront.

    Перед каждым воспроизведением генерилась уникальная ссылка с подписью, которая привязана ко времени и «живёт» недолго – см. Signed URLs

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

    Или посмотрите сервис Kinescope.ru – они предлагают услугу доставки контента и его защиты.
    Ответ написан
    1 комментарий
  • Почему не работает код в firefox?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Вам с бэка возвращается не JSON. Ищите ошибке на бэке, firefox тут не при чём.
    Ответ написан
    Комментировать
  • Почему разрешение страницы сайта меньше, чем монитора?

    Lynn
    @Lynn
    nginx, js, css
    Потому что у вас настроено увеличение либо в браузере либо в ОС
    Ответ написан
    Комментировать
  • Почему не удаётся подключиться к PhpMyAdmin?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    phpmyadmin - это не база, а только панель управления базой.
    Тебе же нужно узнать адрес и порт mysql, и использовать их.

    PS:
    1. Лучше пересмотри свою идею использования DbUtils и посмотри, как в других проектах работают с базой. На том же metanit есть примеры работы с Dapper и EF Core. Иначе он у тебя превратится со временем в сотню утилит и твой код в лучшем случае будет выглядеть как какая-то процедурщина а-ля 1С, а в худшем случае - как спагетти. И это не говоря об эффективности.
    2. Вместо поделия Oracle под названием MySql.Data лучше использовать библиотеку MySqlConnector (причины тут: https://mysqlconnector.net/)
    Ответ написан
    1 комментарий
  • Доказано ли, и можно ли сжать произвольные данные до 20 байтов к примеру?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Допустим, существует некий алгоритм, который преобразует последовательность X длины M в последовательность Y, причём существует обратное преобразование. Неважно, что это за алгоритм конкретно - сжатие, создание "зерна" и пр. Но очевидно, что:

    1. Количество вариантов последовательности X составляет K в степени M, где K - размер словаря, т.е. количество возможных различимых значений одного элемента последовательности X. В случае байтовой последовательности это байт, т.е. K=256.

    2. Каждая последовательность X после преобразования даёт последовательность Y, причём две разные последовательности X дают разные последовательности Y.

    Соответственно количество возможных последовательностей Y равно количеству возможных последовательностей X. И соответственно если существует хотя бы одна последовательность Y короче последовательности X, то существует хотя бы одна последовательность Y длиннее последовательности X.

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

    Что же до "зерна", которое разворачивается в гигабайты - во-первых, количество финальных миров определяется количеством значений "зерна", то есть вовсе даже не такое бесконечно большое, как кажется, во-вторых, созданный образ мира содержит значительное число повторяющихся элементов, а создание копий - это немножко не декомпрессия.
    Ответ написан
    Комментировать
  • Не подключается .CSS к html?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    Скобка закрывающая
    Скриншот кода удалён модератором.
    Ответ написан
    5 комментариев
  • Зачем надо закрывать курсор при работе с БД?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Дело в том что курсор может потреблять ресурсы. Например вы захотели взять первые 10 строк из 10000000 выборки но предварительно отсортировали. Выбрали 10 строк и не сделали финализирующие протокольные действия в Python. База данных будет удерживать в памяти алгоритмы и структуры данных для снапшота результата этого запроса до тех пор пока не придет явный CLOSE с вашей стороны либо интеллекуальный драйвер который еще и обладает логикой уборки мусора сам не догадается что Statement уже вышел из scope вашего использования и может быть удалён GC.

    Я был свидетелем ситуации когда крупное ent-приложение Java/Oracle переполняло память из-за неверной обработки Exception и плодила много незакрытых курсоров в БД. Java от этого не сильно страдала (GC всё убирал) но страдал Oracle. Потому что уборка происходила слишком поздно. Пофиксилось тогда переписыванием с try на try-with-resources.

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

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    число 0755, волшебным образом, превращается в 493
    Никаким не волшебным, а самым обычным и описанным в документации.

    Обратите внимание, что аргумент permissions необходимо задавать в виде восьмеричного числа (первой цифрой должен быть ноль).
    https://www.php.net/manual/ru/function.mkdir.php
    Ответ написан
  • Почему PHP используется в не HighLoad приложениях?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Этот один человек профан и глупец, а PHP простой в изучении и использовании язык, который применяется в проектах с любым уровнем нагрузок.
    Ответ написан
    2 комментария
  • Можно ли хранить массивы в MySQL?

    ddv88
    @ddv88
    Binance Futures
    Есть вариант хранить как строку "1,2,3,4"

    JSON

    мне надо 100 записей в бд для 10 id'шников

    И что? В чем проблема?

    как-то не правильно это все

    Читаем https://habr.com/ru/post/64524/
    Ответ написан
    Комментировать
  • Как сделать прогрессбар с процентами для получения ответа c json по api?

    @GrayHorse
    Можно использовать TransformStream.
    Кода будет поменьше, чем если создавать "прокси" ReadableStream. Единственное отличие, что TransformStream "ленивый". Т.е. если закомментировать await newResponse.blob(); onProgress не будет вызываться, хотя данные были загружены.

    Собственно вот онлайн демо.

    const response = await fetch("https://fetch-progress.anthum.com/30kbps/images/sunrise-baseline.jpg");
    total.value    = parseInt(response.headers.get("content-length")) || 0;
    
    function onProgress(chunk) {
        loaded.value += chunk.length;
    }
    const ts = new TransformStream({
        transform(chunk, controller) {
            onProgress(chunk);
            controller.enqueue(chunk);
        },
    });
    response.body.pipeThrough(ts);
    const newResponse = new Response(ts.readable);
    
    const blob = await newResponse.blob();


    Имей в виду, что "content-length" может отсутствовать.

    А также данные могут быть сжаты, если есть заголовок "content-encoding", который, к слову, по-умолчанию будет недоступен для кода при кросс-доменных запросах.

    И при "content-encoding" в "content-length" значение всегда указано для сжатого респонса, а в коллбеке будут уже не сжатые данные. Т.е. loaded в таком случае будет больше значения total ("content-length")

    ---

    "Прокси" ReadableStream:
    const reader = response.body.getReader();
    const readableStream = new ReadableStream({
        async start(controller) {
            while (true) {
                const {done, value} = await reader.read();
                if (done) { break; }
                onProgress(value);
                controller.enqueue(value);
            }
            controller.close();
            reader.releaseLock();
        },
        cancel() {
            void reader.cancel();
        }
    });
    const newResponse = new Response(readableStream);
    Ответ написан
    3 комментария
  • Как в mysql взять любую из первых 10 строк?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    SELECT ...
      FROM (
        SELECT ...
          FROM ...
          ORDER BY `id` DESC
          LIMIT 10
      ) AS `t`
      ORDER BY RAND()
      LIMIT 1
    Ответ написан
    Комментировать
  • Как написать запрос (устранение "сирот")?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    DELETE `t1`.*
      FROM `table` AS `t1`
      LEFT JOIN `table` AS `t2` ON `t2`.`id` = `t1`.`parent_id`
      WHERE `t2`.`id` IS NULL
    Ответ написан
    Комментировать