Профиль пользователя заблокирован сроком с 17 мая 2024 г. по 17 мая 2025 г. по причине: нарушение правил сайта
  • Как подключить paypal на сайт?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Вот курсы https://developer.paypal.com/docs/classic/training/
    Вот примеры кода https://developer.paypal.com/docs/classic/lifecycl...
    Что именно там не понятно?
    Ответ написан
    Комментировать
  • Как снять ограничение сервера на длину POST запросов?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    на выбор:

    php.ini
    post_max_size=200M
    upload_max_filesize=200M


    или

    .htaccess
    php_value post_max_size 200M
    php_value upload_max_filesize 200M


    На дешевых shared хостингах может не работать.
    Ответ написан
  • Как отправлять почту на несколько ящиков сразу?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Если вы делаете какую то сугубо техническую рассылку к примеру по своим собственным сотрудникам внутри вашего домена - можно использовать второй вариант если очень хочется. (хотя я все равно не вижу в нем смысла)
    Во всех остальных случаях - первый без вариантов.

    Письма с большим количеством адресатов во первых активно режутся спам фильтрами, во вторых как то не очень правильно раскрывать персональные email пользователей.

    С одного сервера можно рассылать миллионы email сообщений в сутки, вы вряд ли упретесь в производительность.
    Ответ написан
    Комментировать
  • Может ли ссылка на файл работать без указания полного пути?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Как правильно написали @voiddancer и @nazarpc абсолютно не важно где у вас лежит файл на диске. Это html. Он разбирается браузером на стороне клиента. Он знает url по которому запросили страницу и больше не знает ничего.

    Ссылки с "/" в начале загружаются от имени домена.
    Ссылки без - от текущего пути.
    Т.е если у Вас url страницы mysite.ru/partners
    то "/css/all.css" будет искаться mysite.ru/css/all.css
    а "css/all.css" - mysite.ru/partners/css/all.css
    Собственно это все можно легко посмотреть в консоли браузера.

    Если у Вас есть точное понимание что сайт всегда будет жить на отдельном домене - пишите ссылки вида "/css/all.css".
    Если такого понимания нет - заведите переменную $basepath = 'http://mysite.ru' в конфиге сайта и в php генерите абсолютные ссылки: $basepath . '/css/all.css'

    Использовать тег base я бы не рекомендовал, т.к во первых мне кажется неправильным правка html макетов при смене домена, а во вторых я многократно сталкивался с его странным поведением в различных браузерах.
    Ответ написан
    Комментировать
  • Есть ли система входа без базы данных?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    в директории к которой хотим закрыть доступ создаем файл .htaccess
    AuthType Basic
    AuthName "restricted area"
    AuthUserFile /usr/local/etc/mysite.htpasswd
    require valid-user

    /usr/local/etc/mysite.htpasswd - полный абсолютный путь к файлу где будут лежать логины и хеши паролей.
    может лежать где угодно но за пределами папки сайта (что бы его нельзя было запросить по http)
    потом в консоли вызываем:
    htpasswd -b -c /usr/local/etc/mysite.htpasswd admin 123456


    Все :)

    PS но вообще это очень не правильный способ, как впрочем и сама идея редактирования файлов из php скрипта. Это потенциально источник кучи уязвимостей и говнокода.
    Разберитесь с базами данных, в использовании mysql на начальном уровне нет ничего сложного.
    Ответ написан
  • Как запретить отображение текста на сайте?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Если ваш сайт на php Вы можете с ним сделать все что душе угодно.
    Уточните вопрос, сейчас не понятно.
    Ответ написан
    Комментировать
  • Нужен надежный парсер сайтов на php?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Не рекомендую использовать phpQuery и иже с с ними.
    В нескольких проектах парсили ~400 000 страниц ежедневно.
    Пробовали Simplehtml и phpQuery. С одной стороны да, запросы пишутся легко и удобно.
    С другой стороны среднее время обработки страницы весом 500kb было несколько секунд, основное время уходило на постройку DOM.
    6 потоков нагружали мощный Xeon под 100% + жрало память адски.

    Самописное решение через regexp обрабатывало ту же страницу за ~30ms, что бы загрузить процессор понадобилось ~40 потоков.
    Ответ написан
    Комментировать
  • Индикация обновления файла на сервере. Как правильно делать?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Сравнивать размер файла - это в общем случае не правильно, т.к данные могут измениться (цена у товара например была 100, стала 200), а размер файла при этом не изменится.

    Вам нужно сравнивать что то, что гарантированно изменяется при изменении данных.
    Самое простое - дата изменения данных. Лучше всего в миллисекундах.
    Т.е при любых изменениях базы данных - обновлять это число.
    Обязательно отдавать его в xml.
    Соответственно приложение сначала отдельно запрашивает с сервера дату изменения (заголовками или отдельным вопросом - не суть важно) и сравнивает её с датой которая была в xml.
    Плюс решения - очень легко проверить надо скачивать или нет.
    Минус - в тех случаях когда что то обновилось - все равно придется перекачать все.

    Выход один - реализовывать свой протокол поддерживающий инкрементное обновление данных с любой версии до актуальной. Но это отдельная большая и ресурсоемкая история.
    Ответ написан
    Комментировать
  • Как вывести данные из формы PHP?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    У Вас отправка mail() находится после блока с проверками
    if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
    $email = trim($email);
    }
    else
    {
    echo "Вы ввели не корректные данные в поле \"E-Mail\"";
    }

    и никак с ним не связано
    Ответ написан
  • Где syntax error у меня в запросе mysql?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Если уж Вы используете устаревший mysql вместо mysqli - надо во первых значения переменных оборачивать в кавычки, во вторых использовать mysql_real_escape_string

    mysql_query ( 'INSERT INTO `listings` ( `body`, `date_added`, `date_expired`, `status`) VALUES ( "'.mysql_real_escape_string($data).'", "'.mysql_real_escape_string($date_added).'", "'.mysql_real_escape_string($date_expired).'", "'.mysql_real_escape_string($status).'")');
    Ответ написан
    Комментировать
  • Как сохранить данные при падении сервера?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Никак. Если сервер лежал - значит те кто отправляли данные просто не смогли до него достучаться.

    Если Вам необходимо построить отказоустойчивую систему - необходимо переходить на мультисерверную конфигурацию с использованием например failover ip.
    (можно использовать вместо этого Amazon route53 + health check но будет частичный простой ~10 минут в случае выхода из строя физического сервера)

    Поскольку failover ip это некоторый гемморой - мы делали так:
    Ставятся 2 front сервера с failover. Они проверяли живы ли backend ноды и перенаправляли запросы туда.
    В случае выхода из строя одного из front - он подменялся по failover.
    В случае выхода из строя одного из back - он автоматически исключался из раздачи на фронтах
    Ответ написан
  • Как правильно обработать данные из mysql БД?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    SELECT disciplina , SUM ( sm1_to ), SUM(sm1_po1 ), ... GROUP BY disciplina
    Ответ написан
    2 комментария
  • Порозовел экран iPhone 5 - как убрать?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    В интернетах пишут попробовать hard reset, сам не сталкивался
    Ответ написан
    Комментировать
  • Какие есть карты с API и большим количеством запросов геокодирования?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Документация на русском есть у яндекса, 2gis, и OSM (wiki.openstreetmap.org/wiki/RU:API_v0.6 )
    В последнем случае не понятно насколько актуальная.

    Лимиты есть какие то у всех. У яндекса можно купить api.yandex.ru/maps/features/?p=commercial стоит ~300k
    Ответ написан
    Комментировать
  • Как посчитать количество запросов к базе данных?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Вместо использования у себя в коде сразу mysqli - сделайте себе какую нибудь библиотеку-обертку для этих функций и вызывайте её.
    В рамках этой библиотеки уже собирайте статистику, логируйте медленные запросы итд
    Ответ написан
    1 комментарий
  • Mysql + php, как организовать мониторинг доступности веб-сервера в разрезе по времени?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    В продакшене используем Amazon route 53 health check, он проверяет раз в секунду. Можно настроить просто на 200й ответ, можно указать конкретный контент который дожен отдаваться с сервера (условно можно сделать скрипт который коннектиться к базе и отвечает ОК если все хорошо)

    Если стоит задача проверять именно локально - любой самопальный скрипт проверки
    Ответ написан
    Комментировать
  • Как сделать максимально юзабельное редактирование данных в веб-интерфейсе?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Вопрос очень абстрактный и зависит например от того какие данные планируется редактировать.
    Если речь идет про что то важной (банковские реквизиты, etc) - я бы настаивал на отдельной форме, пользователь не должен менять их просто так.

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

    По ховеру надо как то подсвечивать поле призывая по нему кликнуть.
    По клику открывать редактирование в +- границах поля.
    Обязательно показывать кнопку отмены изменений.
    По клику на любое другое место/нажатию enter - сохранять данные.

    Посмотрите например на https://trello.com/
    Или в Jira редактирование issue.

    PS Я не дизайнер, мнение субъективно.
    Ответ написан
    Комментировать
  • Можно ли в mysql сортировать по количеству записей?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Думаю что можно извратиться и запихать это в один запрос, но это абсолютно не правильно с точки зрения быстродействия.
    Правильно - кешировать в категории количество товаров в отдельном поле.
    Обновлять это поле когда изменяется категория у товара.
    Запрос получается простой и легкий.

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

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Скрипт в качестве одного из входных аргументов получает название домена.
    В базе у всех данных указано к какому домену они относятся.

    Ну и дополнительно применяется шардирование:
    Все данные разбиты по доменам на отдельные ноды, по NNN доменов в ноде.
    Каждая нода - отдельная база данных.
    Ноды уже мапятся на физические сервера.

    Соответственно когда запускается скрипт на бекенде, он получает название домена, по нему определяет ноду и физический сервер, подключается туда.

    Это общая схема работы всех нагруженных сервисов.

    Конкретно в случае ucoz возможно им выгоднее дополнительно сохранять все в статику.
    Ответ написан
    Комментировать
  • Как вывести сумму значений sql запросом, если данный уходят в переменную?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    SUM это агрегирующая функция, она может принимать только 1 аргумент.
    www.tizag.com/mysqlTutorial/mysqlsum.php
    Если вам нужно просуммировать столбцы в рамках одного кортежа - пишите явно:
    SELECT (field1+field2+field3) AS field_sum FROM ...


    PS
    Если Вы считаете какую то статистику - то сомневаюсь что в первом запросе нужен distinct, скорее всего запрос составлен неправильно
    Ответ написан