Задать вопрос
  • Два домена с https на один сайт на nginx+php-fpm?

    deepblack
    @deepblack
    server {
        listen         *:443 ssl;
        server_name   domain1.com;
        ssl_certificate /path/to/domain1.crt;
        ssl_certificate_key /path/to/domain1.key;
    
        location / {
            proxy_pass http://myapp1;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
    
    server {
        listen         *:443 ssl;
        server_name   domain2.com;
        ssl_certificate /path/to/domain2.crt;
        ssl_certificate_key /path/to/domain2.key;
        
        location / {
            proxy_pass http://myapp1;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
    Ответ написан
    2 комментария
  • Два домена с https на один сайт на nginx+php-fpm?

    Lynn
    @Lynn
    nginx, js, css
    Можно ли в конфиге nginx как-то прописать разные сертификаты в зависимости от запрашиваемого домена?


    Уже можно.
    Начиная с версии 1.15.9 в имени файла можно использовать переменные при использовании OpenSSL 1.0.2 и выше:
    ssl_certificate     $ssl_server_name.crt;
    ssl_certificate_key $ssl_server_name.key;

    Ответ написан
    6 комментариев
  • SQL запрос как создать 9999 записей с итерацией чисел?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    SET `cte_max_recursion_depth` = 10000;
    INSERT INTO `test` (`DATE_CREATE`, `DATE_UPDATE`, `ACTIVE`, `USER_ID`, `VALUE`) 
      WITH RECURSIVE `cte` (`DATE_CREATE`, `DATE_UPDATE`, `ACTIVE`, `USER_ID`, `VALUE`) AS (
        SELECT NOW(), NOW(), 1, 1, 1 AS `VALUE`
        UNION
        SELECT NOW(), NOW(), 1, 1, `VALUE`+1 FROM `cte` WHERE `VALUE` < 9999
      )
      SELECT *
        FROM `cte`
    Ответ написан
    Комментировать
  • SQL запрос как создать 9999 записей с итерацией чисел?

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

    ALTER TABLE tablename
    MODIFY COLUMN date_create TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    MODIFY COLUMN date_update TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;

    Всё, теперь они сами будут заботиться о правильном значении. Точнее, сервер будет об этом заботиться. Если, конечно, коду не придёт в голову устанавливать значения этих полей явно (нафига бы только - лишняя же работа).

    2. Для выполнения операции используем рекурсивный CTE (помним, что поля DATE_CREATE/DATE_UPDATE сами заботятся о правильном значении, как и автоинкрементный первичный ключ):

    INSERT INTO tablename (active, user_id, value)
    WITH RECURSIVE
    cte AS ( SELECT 1 num
             UNION ALL
             SELECT num + 1 FROM cte WHERE num < 9999 )
    SELECT 1, 1, num
    FROM cte;


    Возможно, предварительно надо установить достаточное значение для сессионной переменной:SET SESSION cte_max_recursion_depth = 10000;

    Если версия MySQL старая и не понимает CTE, то

    INSERT INTO tablename (active, user_id, value)
    SELECT 1, 1, 1 + t1.num + t2.num * 10 + t3.num * 100 + t4.num * 1000 AS value
    FROM       (SELECT 0 num UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t1
    CROSS JOIN (SELECT 0 num UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t2
    CROSS JOIN (SELECT 0 num UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t3
    CROSS JOIN (SELECT 0 num UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) t4;
    HAVING value <= 9999;
    Ответ написан
    1 комментарий
  • Какое использовать регулярное выражение в Notepad++?

    Stalker_RED
    @Stalker_RED
    Мне кажется, вы хотите странного.
    Вот это похоже на ваше описание?
    Xca8L8p.png

    Но ломается, если в строке несколько слов в кавычках.
    Ответ написан
    3 комментария
  • Какой должен быть тип строки в БД для номера телефона, состоящего из одних цифр?

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

    Если так, то предлагаю с самим полем ничего не делать, пусть себе будет текстовое и со всякой фигнёй. А для использования создать ещё одно, вычисляемое, поле, в которое класть очищенное и приведённое к числовому значение.

    Т.е. если сейчас имеется
    CREATE TABLE users (
        ...
        phone VARCHAR(255),
        ....
    );

    то выполняем
    ALTER TABLE users ALGORITHM = INPLACE
        ADD COLUMN phone_num BIGINT UNSIGNED AS (REGEXP_REPLACE(phone, '[^0-9], ''')) VIRTUAL,
        INDEX idx_phone_num (phone_num);


    Что это даёт?

    Выражение вычисляемого поля чистит строковое значение от всего, что не цифра, после чего значение преобразуется в тип данных поля, т.е. BIGINT UNSIGNED. Отлично, число получено.

    Поле объявлено как VIRTUAL. Это означает, что его значение не хранится в таблице, а вычисляется каждый раз, когда оно потребуется. Но мы создаём по этому полю индекс. Соответственно сервер может не вычислять значение, а извлечь его из индекса. Ещё лучше, если это поле будет включено в композитные индексы вместо поля phone - тогда вероятность, что сервер будет извлекать значение из индекса, увеличится.

    Конечно, можно было бы сделать поле STORED и не морочиться с индексом. Но тогда процесс изменения структуры таблицы будет достаточно длительным, потому что такая операция не может быть INPLACE и требует COPY. Впрочем, это может оказаться более подходящим в определённых условиях.

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

    rozhnev
    @rozhnev Куратор тега MySQL
    Fullstack programmer, DBA, медленно, дорого
    То что вы хотите не является задачей базы данных. Эта работа должна выполнятся в коде программы предшествующем сохранению в базу
    Ответ написан
    Комментировать
  • Какой должен быть тип строки в БД для номера телефона, состоящего из одних цифр?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Какой должен быть Тип строки БД только для чисел?
    Предполагаю что имелось в виду "какой тип данных использовать для ячейки, для хранения чисел в формате 0000000000?". Скорее всего вам придется использовать варчар, так как нули в начале строки при преобразовании в число у вас тупо проигнорируются.

    но туда попадают номера в виде (000)-00-00-000
    Плохо

    Но маску ввода номера на сайте отключить или изменить не могу
    И не надо, это не на форнте решать нужно. Это решается средствами серверного языка, нода, пых, короче ПЕРЕД занесением данных в бд.
    Ответ написан
    5 комментариев
  • Как на 1 хостинге запустить несколько веб скриптов, на разных субдоменах?

    EvgenyMamonov
    @EvgenyMamonov Куратор тега Go
    Senior software developer, system architect
    Пишите Go lang сервисы, которые вам нужны.
    Каждый сервис слушает разный порт.
    Ставите веб сервер, например nginx и настраиваете виртуальные хосты, которые прокируют запросы к Go lang сервисам.
    Конфиг nginx'a будет выглядеть примерно так
    server {
        listen *:80;
        server_name yourdomain1.com; # домен, который вам нужно
        ...
        location / {
            proxy_pass http://127.0.0.1:9000; # IP адрес и порт, на котором слушает сервис Go lang.
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
    
    server {
        listen *:80;
        server_name yourdomain2.com; # домен, который вам нужно
        ...
        location / {
            proxy_pass http://127.0.0.1:9001; # IP адрес и порт, на котором слушает сервис Go lang.
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
    Ответ написан
    1 комментарий
  • Стоит ли использовать redbean php вместо PDO?

    @galliard
    Используй Doctrine или хотя бы Eloquent. Redbean - это убогое поделие для ламеров.
    Ответ написан
    Комментировать
  • Как правильно загружать изображения на сервер для их превью на клиенте?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Можно просто сразу в браузере показать превью и не грузить их на сервер, например)
    Ответ написан
    Комментировать
  • Как сформировать кросс-таблицы по автозапчастям на интернет-магазин сделанный на cms 1с битрикс чтобы выводил кроссы по нужному запросу?

    @yuretzgt
    парсить с других сайтов, баз данных или вбивать вручную
    Ответ написан
    Комментировать
  • На чем лучше делать чат-бота для VK?

    Captain
    @Captain
    На чем лучше умеете программировать + какая готовая библиотека для создания ботов больше нравится. Скорость работы все равно упрется в ограничения VK по кол-ву запросов.
    Ответ написан
    Комментировать
  • Как правильно делать JOIN таблиц?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Есть ли разница джоинов этих двух строк, с точки зрения нагрузки на БД?

    Оба запроса - INNER JOIN. Если не используется STRAIGHT_JOIN, то сервер гарантированно построит для обоих запросов один и тот же план выполнения.

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

    PeterLS
    @PeterLS
    Руководитель веб-студии
    Храни количество заработанных очков (exp).
    Соответственно, при выборе данных из БД всегда сможешь быстро получить уровень (тут уже пиши формулу какую хочешь).

    Например:
    $exp = 487; // количество очков опыта у отдельного пользователя
    $step = 50; // шаг = 50 очков опыта
    $level = floor($exp / $step); // быстро посчитаешь уровень.


    Если уровень нужен часто, то можешь помимо очков опыта хранить и посчитанное значение (пересчитывай его процедурой в БД при обновлении значения очков)
    Ответ написан
    Комментировать
  • Как сделать update записи вместе с select из другой таблицы?

    rozhnev
    @rozhnev Куратор тега MySQL
    Fullstack programmer, DBA, медленно, дорого
    MySQL:
    UPDATE Admins A
    JOIN Users U ON U.UserID = A.AdminID
    SET A.password = U.password
    WHERE U.UserID = 123;


    Test MySQL here

    MS SQL:
    UPDATE Admins
    SET Admins.password = U.password
    FROM Admins A JOIN Users U ON U.UserID = A.AdminID
    WHERE A.AdminID = 123;


    MS SQL Fiddle
    Ответ написан
    2 комментария
  • У какого десктопного Linux минимальные требования к RAM?

    @kandrash
    Кратко о себе
    Много ответов, но все чушь. Вас не интересует линукс, вам нужны приложения. Ой, хром 4Гб отожрал, ой IDE 2Гб требует.

    И что? Помогло вам, что на линуксе 50МБ сэкономили?
    Ответ написан
    Комментировать
  • Когда полезно использовать генератор, если объем данных небольшой?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Эффективность здесь вообще не при чем.
    Генератор - это синтаксический сахар
    То есть вопрос вообще не про эффективность

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

    Но на самом деле бывают и другие критерии.
    У генератора есть одно однозначно полезное применение - возможность создания унифицированных интерфейсов.
    Любой потоковый источник он может превратить в перебираемый.
    То есть можно наплодить интерфейсов и скармливать их какому-нибудь форичу, и он будет с ними работать, не зная, поток внутри, или массив. Файл, результат запроса из БД, раскодированный джейсон - если в каждого из этих источников будет перебираемый интерфейс, то все их можно будет перебирать в одном и том же цикле.
    И вот ради такой унификации и используется генератор
    Ответ написан
    Комментировать
  • Почему многие говорят учить python вместо php?

    DevMan
    @DevMan
    спросите у многих, кто это говорит.

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

    лично я для web–дев/бэкэнд предпочитаю слоника.
    Ответ написан
    3 комментария