• Как отслеживать онлайн статус пользователя, как в соц. сетях?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    WebSocket
    Ответ написан
    Комментировать
  • Как отслеживать онлайн статус пользователя, как в соц. сетях?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    1. Websocket
    2. Периодически опрашивать страницу пользователя ajax-ом. Если есть ответ - он в онлайне, иначе - в оффлайне
    Ответ написан
    Комментировать
  • Как реализовать свой протокол?

    @AlexVWill
    переходит по моей ссылке вида: custom-protocol://mysite.com,

    вопрос не в сервере, а в клиенте, обработка URL, т.е. открытие соответствующего приложения является локальной задачей, а дальше уже локальное приложение отвечает за то, куда направляется запрос, на какой адрес по какому порту, и что на том конце на сервере на этот запрос отвечает... web сервер работает только с HTTP(S), на то он и web, чтобы был реализован ответ на какой то кастомный протокол, надо чтобы на удаленной стороне соответствующий порт слушал кастомный сервер
    Ответ написан
    Комментировать
  • Можно ли и как изменить исходящий запрос в DevTools?

    DevMan
    @DevMan
    Ответ написан
    Комментировать
  • Как в Notepad ++ поменять местами?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    Найти (в режиме регулярок):
    (.*?);(.*)
    Заменить на:
    $2;$1
    612f862522b0e169936139.png
    Ответ написан
    Комментировать
  • Какие способы общения есть между серверным и клиентским приложением?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    HTTP: REST, SOAP,...
    P2P
    WebSockets,
    ...
    Обычное сетевое взаимодействие
    7 уровней модели OSI тебе знакомы?
    Ответ написан
    Комментировать
  • Как взламывают бд крупных компаний?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Взламывают точно так же как и мелкие.
    В статье описана обычная SQL инъекция, когда данные подставляются прямо в SQL запрос.

    Я просто сомневаюсь, что valve может нанять таких людей в backend

    Не надо сомневаться.
    Нету никаких "особенных способов взлома".
    А есть такое явление как "эффективные менеджеры". У которых размер премии зависит от того, сколько денег они сэкономили акционерам.

    Если бы там были подготовленные выражения, то и взлома бы не было.
    Но вместо подготовленных выражений в больших компаниях есть эффективные менеджеры. Которые экономят на нормальных программистах, и заказывают разработку в Индии, в штате Бангалор. Где живет какой-нибудь Хамишь Кумар, который родился в касте вычерпывателей говна из сортиров. И вот у него только один шанс не черпать говно всю жизнь - всеми правдами и неправдами научиться программировать, путь даже за еду. Сравниваем с силиконовым программером с запросами $250k в месяц. Экономия налицо!

    На всякий случай напомню, для стопроцентной защиты от инъекций необходимо всегда следовать двум простым правилам:

    1. данные подставляем в запрос только через плейсхолдеры
    2. идентификаторы и ключевые слова подставляем только из белого списка, прописанного в нашем коде.


    Ключевое слово здесь - "всегда". Как только начинаются рассуждения вида "ну эти данные и так безопасные, их защищать не надо", то в этот момент мы добавляем инъекцию к себе на сайт. Следует понимать, что защищаем мы не данные, а запрос. Данные нас вообще не интересуют - какие они, откуда пришли, являются "безопасными" или нет. Важно не то откуда они пришли, а то, куда они идут. В SQL запрос? Используем подготовленные выражения, точка.
    Ответ написан
    1 комментарий
  • Два домена с 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
    парсить с других сайтов, баз данных или вбивать вручную
    Ответ написан
    Комментировать