Задать вопрос
  • Чем конкретно занимается 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
    Дополнил свой ответ, исходя из новых данных.
  • Непонятные вещи с путями при 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.
  • Ваши впечатления от использования меню?

    orlov0562
    @orlov0562
    bogette, у меня нету прокрутки, у меня нету верхнего меню. Есть надпись Warmth и три палки в правом углу. При нажатии, появляется меню в сайдбаре. Причем если клацать по этой кнопке с тремя полосками, то клики проходят через раз, работает странно.

    В общем, думаю, надо вначале закончить, потом можно будет как-то оценить. Пока, слишком много "но".
  • Из чего состоит любой язык программирования?

    orlov0562
    @orlov0562
    AbaGardon, ну так открой оглавления книг java, c++, php и python и сравни. Вроде, это не сложно. Топ языков, находится тут
  • Как найти коллег для совместной разработки ПО?

    orlov0562
    @orlov0562
    novichek, тогда надо подтянуть знания в нужных областях, чтобы собрать что-то, о чем можно было бы рассказать. Базовая верстка осваивается за выходные, как и конструкторы по типу DroidScript. Ну, а если прям это совсем сложно, то можно сделать презентацию идеи в картинках, и начать вести блог про создание прототипа своими силами, типа того: https://habr.com/users/koito_tyan/posts/
  • Анализ логов сервера на Python. Зависает скрипт при logrotate, как бороться?

    orlov0562
    @orlov0562
    Еще можно в конфиге logrotate перезапускать нужный скрипт с помощью postrotate/endscript . Описание и примеры есть в справке. Например, так работает перезапуск php-fpm
  • Как сделать такой прогресс бар?

    orlov0562
    @orlov0562
    Обновил JSFiddle, смотри Javascript код. Нужно будет немного доработать уже под твою задачу, но идея думаю понятна - меняешь на нужную позицию через javascript (если страница перезагружается, то можно и прямо в css дописывать сдвиг на нужное кол-во процентов)
  • Присвоить id в обратном порядке?

    orlov0562
    @orlov0562
    Vitaliy Orlov, на самом деле и мой запрос, не корректно отработает на таком наборе данных
    INSERT INTO tmp 
      (id, color)
    VALUES 
      (1, 'green'),
      (21, 'red'),
      (3, 'blue'),
      (4, 'white')
    ;


    результат будет такой
    id	color
    ---------------
    21	green
    4	red
    3	blue
    1	white

    а должен быть такой
    id	color
    ---------------
    4	green
    3	red
    21	blue
    1	white


    для полноценного решения, надо ORDER BY id DESC заменить на DESC сортировку по номеру строки, а не полю id, тогда все будет работать как надо