• Как скорректировать время в результате select?

    orlov0562
    @orlov0562
    Tibor128,

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

    Максимально близкое решение, это определить функцию, которая будет скрывать реализацию обработки, пример указан выше.
  • Как скорректировать время в результате select?

    orlov0562
    @orlov0562
    Вот я тут поигрался: https://rextester.com/CVGMO29671, смотреть лучше по ссылке, но код так же прилагаю ниже.

    "SET timezone" - не поможет, надо или в SELECT-е конвертировать, что от твоего решения не особо отличается или функцию писать. Моё мнение, лучше оставить конвертацию в SELECT-ах, если только пишешь не для своих нужд..

    --PostgreSQL 9.6
    --'\\' is a delimiter
    
    
    CREATE TABLE tbl100500 (
     id serial PRIMARY KEY,
     ts TIMESTAMP
    );
    
    SET timezone TO 'UTC';
    SHOW timezone;
    INSERT INTO tbl100500 (id, ts) VALUES (1, NOW());
    SELECT * FROM tbl100500;
    
    SET timezone TO 'UTC+1';
    SHOW timezone;
    SELECT * FROM tbl100500;
    
    SELECT id, ts AT time zone 'UTC+2' FROM tbl100500;
    SELECT id, timezone('UTC+3', ts) FROM tbl100500;
    
    CREATE OR REPLACE FUNCTION timezoned_ts()
    RETURNS TABLE (_id INT, _ts TIMESTAMP) LANGUAGE plpgsql AS $$
    BEGIN
        RETURN QUERY SELECT id::int, timezone('UTC+8', ts)::timestamp FROM tbl100500;
    END $$;
    
    SELECT * FROM timezoned_ts()
  • Как сделать запрос sql для 3,4 или более связанных таблиц?

    orlov0562
    @orlov0562
    mrusklon,

    flags - это главная таблица, от которой начинаются связи, представь себе 1 строку этой таблицы, и просмотри связи.

    [
    flags.(id фалага), flags.(название страны),
    ]

    дальше ты говоришь, присоединить данные из таблицы flag_color_link, такие у которых flag_id = (id флага), твоя строка расширяется

    [
    flags.(id фалага), flags.(название страны),
    flag_color_link.(flag_id), flag_color_link.(color_id)
    ]

    дальше ты говоришь, присоединить данные из таблицы flag_color, такие у которых color_id = (id цвета)
    твоя строка расширяется

    [
    flags.(id фалага), flags.(название страны),
    flag_color_link.(flag_id), flag_color_link.(color_id)
    flag_color.(id цвета), flag_color.(название цвета)
    ]

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

    [
    flags.(id фалага), flags.(название страны),
    flag_color_link.(flag_id), flag_color_link.(color_id)
    flag_color.(id цвета), flag_color.(название цвета)
    ]
  • Wordpress не работают перенаправления на страницу профиля, если ник состоит не из цифр, как решить?

    orlov0562
    @orlov0562
    1) В сохраненном ошибка, лишний знак ^
    RewriteRule ^^profile/([^/]+)/? /?nick=$matches[1] [QSA,L]

    должно быть так
    RewriteRule ^profile/([^/]+)/? /?nick=$matches[1] [QSA,L]


    Если это не опечатка, то попробуйте убрать тут в начале
    add_rewrite_rule( '^profile/([^/]+)/?', '?nick=$matches[1]', 'top' );

    и посмотрите как будет в .htaccess

    2) Попробуйте руками в .htaccess подогнать, для теста, например так
    RewriteRule ^profile/(.+)$ /?nick=$matches[1] [QSA,L]

    или так
    RewriteRule ^profile/(abc)$ /?nick=$matches[1] [QSA,L]

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

    orlov0562
    @orlov0562
    Владислав Лысков, погугли. Вкратце, это файлик с инфой о тех кто делал сайт.
  • Чем конкретно занимается Frontender сейчас?

    orlov0562
    @orlov0562
    DevFoDevi, вполне может быть, если верстальщик только верстает, а фронтендер пишет туда логику на js-е. Но, это должен быть очень крупный проект. Например, вполне может быть какая-нибудь валютная биржа, где верстальщик будет только подгонять блоки под дизайн, фронтендер будет писать весь js, а бэк заниматься endpoint-ами API. Но, пока таких проектов не много.

    Это как, если бы запросы к БД на SQL-е писал не бэк, а специально нанятый SQL-разработчик. Такое вполне может быть, но на очень больших проектах.
  • Как определить и хранить локацию пользователей?

    orlov0562
    @orlov0562
    Евгений,

    GeoIP не отдает список городов определенной страны или области


    у них есть база всех городов, которую можно использовать
    Free World Cities Database
    Country Code
    ASCII City Name
    City Name
    Region
    Population
    Latitude
    Longitude

    привязываться к конкретному городу из этой базы

    Так же можно проитерировать все ip и собрать свою аналогичную базу.
  • Что это за вирус, и чего теперь бояться?

    orlov0562
    @orlov0562
    Антивирусники особо не помогут, только для вирусов с устойчивой сигнатурой. А тут возможностей ее поменять безграничное кол-во.

    Залезть могла в любой файл, любой директории доступный для записи. Проверить это можно написав скрипт с перебором всех папок/файлов и проверкой на запись, по типу
    foreach(glob('dir/*') as $file) {
        if (is_writable($file)) echo $file.' WRITABLE'.PHP_EOL;
    }


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

    Ну, и обрати еще внимание, если у тебя shared хостинг, то вирус может и от соседа лезть, если у тебя стоят где-нибудь права 777 или не очень квалифицированные админы хостинга.

    ЧТо касается защиты, то тут просто есть ряд мер, которые можно применить, чтобы уменьшить кол-во таких проблем: например, выставить права на файлы, которые не позволяют менять файлы, запретить eval в php, закрыть через .htaccess endpoint-ы через которые лезут боты, использовать сторонние скрипты, которые хранят хеш файлов и сигнализируют при их изменениях и т.д.
  • Как загрузить прайс лист по частям?

    orlov0562
    @orlov0562 Куратор тега PHP
    Kravalg, ключевое слово "могут". В гигабайтных файлах нет ничего страшного. Если у тебя есть на сервере память и гигабайтный json с выгруженной внутрь какой-нибудь EAV, поверь проще в момент импорта выделить память, чтобы вычитать структуру за раз и оперировать с ней, чем вычитывать его по частям и потом пытаться все свести воедино. Кроме того, я уверен, что тот кто может написать парсер для огромного json файла, уж точно будет понимать последствия выделения скрипту большого кол-ва памяти.
  • Как загрузить прайс лист по частям?

    orlov0562
    @orlov0562 Куратор тега PHP
    Дополнил свой ответ, исходя из новых данных.
  • Как проверить верстку сайта?

    orlov0562
    @orlov0562
    Название section желательно в <h1-h6>.

    - Each <section> should be identified, typically by including a heading (<h1>-<h6>> element) as a child of the element.


    У значка (c) html entity = copy; (с точкой запятой на конце). У всех html entity точка c запятой на конце, думаю у тебя просто опечатка.
  • Непонятные вещи с путями при AJAX-запросе?

    orlov0562
    @orlov0562
    Dymok, всего скорее потому что веб-серверы по-разному настроены, для обработки обращений вида
    site.com/../handler.php
  • Как правильно составить регулярное выражение для src?

    orlov0562
    @orlov0562 Куратор тега PHP
    Илья Кочкин, потому что кавычки используются в аттрибутах тега и их не может быть в тексте url.

    т.е. не может быть src="тут-url " тут-продолжение-url "

    Но, могут быть, например, как одинарные кавычки так и двойные, например чередоваться src='123' и src="123", тогда регулярка получится сложнее. Тут я написал самый простой вариант.

    Регулярки, это дело такое... можно так валидировать email:
    [-a-z0-9_]+@[-a-z0-9]+\.[a-z]+
    а можно так
    (?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])


    все зависит от задач :)

    Если есть желание разобраться, советую книгу Джефри Фридла "Регулярные выражения", там подробно все разобрано, причем с особенностями конкретных языков программирования
  • Как правильно составить регулярное выражение для src?

    orlov0562
    @orlov0562 Куратор тега PHP
    Илья Кочкин,

    4) ([^"]+) не понятнтно

    скобки означают "карман", можешь представить себе карман как массив с переменными, подпадащими под регулярку внутри скобок. Т.е. в этом случае попадут все символы до тех пор пока не встретятся кавычки. Нумерация карманов идет от 1, в кармане 0 хранится строка попавшая под всю регулярку

    можешь посмотреть такой пример
    $text = 'abc123def456 ';
    preg_match('~abc(\d+)def(\d+)~', $regs);
    print_r($regs)


    в $regs увидишь значение карманов

    7)2 параметр функции не понятно

    второй параметр функции это то, на что надо заменить тот текст который попал под регулярку, $1 = означает первый карман
  • Как правильно составить регулярное выражение для src?

    orlov0562
    @orlov0562 Куратор тега PHP
    Илья Кочкин,

    модификатор m = служит для применения регулярки построчно (т.е. представь что текст разбивается по переносам строки и затем регулярка применяется по отдельности к каждой строке)
    ^ = начало строки
    $ = конец строки
    .+ = любые символы
    [^"]+ = любые символы кроме кавычки

    подробное объяснение по операторам есть в википедии

    в итоге получается, что под регулярку подпадает все от начала строки до конца строки, в скобки захватывается только url картинки, он находится в кармане №1

    далее preg_replace заменяет все что подпало под регулярку (т.е. всю строку), на то что указано во втором параметре функции, т.е. $1, что означает карман №1 (url-картинки)
  • Обновление AUTO_INCREMENT средствами php?

    orlov0562
    @orlov0562 Куратор тега PHP
    Мне нужно что бы очередность была правильной, это список очереди! Допустим в очереди 10 людей и у каждого человека есть талон с номером 1,2,3,4,5 и так далее, человек с талоном номер два сказал идите вы нахер я стоять не буду в очереди и удаляется следовательно человек с талоном номер 3 должен становиться под номером "2" и так по возрастанию те кто за ним смещаются по очереди на вверх.


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

    SELECT 
        id, 
       @o:=@o + 1 as ord
    FROM 
       table, 
       (select @o:=0) as o
    ORDER BY id ASC


    при такой таблице
    CREATE TABLE tmp (
      id INT,
      col VARCHAR(255)
    );
     
    INSERT INTO tmp 
      (id, col)
    VALUES 
      (1, 'a'),
      (3, 'b'),
      (4, 'c'),
      (5, 'd')
    ;


    выведет
    id	ord
    1	1
    3	2
    4	3
    5	4
  • Каков порядок проектирования веб сервиса?

    orlov0562
    @orlov0562
    wawa, обычно между п.1 и п.2, составляется список задач для решения "проблем" - этап называется проектирование. Исходя из него и разрабатывается все остальное. Если возникает проблема UI<->API, то это проблема именно проектирования. Она будет решаться по-ситуации и может затронуть любые этапы разработки (схема базы, endppoint-ы, UI). Например, изначальные требования были сделать авторизацию пользователей по email, но потом решили сделать двухфакторную авторизацию через соц. сети и смс. Такое изменение затронет и базу и endpoint-ы и UI.

    Если же речь про то, что при разработке UI потребуются дополнительная информацию которую не предоставляют endpoint-ы, то это так же ошибка проектирования, тк все структуры данных и их формат должны быть определены на этапе проектирования.
  • Ваши впечатления от использования меню?

    orlov0562
    @orlov0562
    Взаимодействие с меню слишком тормознутое и не понятное. Нажимая на меню, я хочу видеть, в первую очередь, меню, а не анимацию. То, что там появляется плейсхолдер, еще более вводит в ступор, т.к. я ожидаю при клике видеть реакцию на свои действия.

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

    orlov0562
    @orlov0562 Куратор тега PHP
    Попробуй добавить в начало php файла
    <?php
    error_reporting(-1);
    ini_set('display_errors', true);
    ini_set('display_startup_errors', true);


    так же в папке где лежит файл попробуй создать/добавить в файл htaccess
    php_flag display_errors on
    php_flag display_startup_errors on
    php_flag html_errors on


    Это должно включить вывод ошибок и предупреждений, если они есть.

    Еще одной частой проблемой является то, что сохраняют файл в не верной кодировке. Попробуй, создать чистый файл, скопировать в него код Ctrl+C/Ctrl+V, сохранить в формате UTF- 8 Without BOM и попробовать с ним. Кодировку файла хорошо видно в Notepad++ для Windows и в Kate для Linux.