Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос
Keanor

Ширшов Александр

Ведущий разработчик
  • 44
    вклад
  • 10
    вопросов
  • 105
    ответов
  • 26%
    решений
Ответы
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Как правильно загружать фотографии на сайт?

    Keanor
    Ширшов Александр @Keanor
    Ведущий разработчик
    Сохранять фотографии в директорию на сервере, а в базе данных хранить путь к файлу.
    Ответ написан 21 мая 2020
    Комментировать
    Нравится Комментировать
  • Как при нажатии на кнопку перейти к следующему id?

    Keanor
    Ширшов Александр @Keanor
    Ведущий разработчик
    В первую очередь прочитать про SQL Injection, если вы этот сайт опубликуете то кто угодно вам все что угодно с вашей БД сможет сделать.

    Получить идентификаторы предыдущих и следующих записей нужно отдельными запросами.

    Для получения следующей записи запрос вида:
    SELECT * FROM projects WHERE id > " . $post_id . " ORDER BY id ASC LIMIT 1";


    Для получения предыдущей записи запрос вида:
    SELECT * FROM projects WHERE id < " . $post_id . " ORDER BY id DESC LIMIT 1";
    Ответ написан более года назад
    2 комментария
    Нравится 2 2 комментария
  • Как прочитать данные из сокета?

    Keanor
    Ширшов Александр @Keanor
    Ведущий разработчик
    in.read(answerHeader) - возвращает кол-во прочитанных байт, не стоит закладываться на то что прочитано будет всегда столько сколько вы ожидаете (чаще будет наоборот).

    не игнорируйте предупреждения idea :)

    если хотите заблокироваться пока не получите нужное количество байт то используйте readNBytes (с java 11).

    // read to EOF which may read more or less than buffer size
    while ((n = read(buf, nread, Math.min(buf.length - nread, remaining))) > 0) {
        nread += n;
        remaining -= n;
    }
    Ответ написан более года назад
    Комментировать
    Нравится Комментировать
  • Как собрать проект JavaFX в JDK 12 из Intellij IDEA?

    Keanor
    Ширшов Александр @Keanor
    Ведущий разработчик
    Как собрать рабочую программу - Мы билдим кастомный рантайм с javafx с помощью подпиленного jpackager отсюда: https://mail.openjdk.java.net/pipermail/openjfx-de...

    Что значит собрать в idea - запустить? Вот куча способов на любой вкус и цвет: https://openjfx.io/openjfx-docs/
    Ответ написан более года назад
    Комментировать
    Нравится Комментировать
  • Как из значений полученных через fgetcsv() составить определенный массив?

    Keanor
    Ширшов Александр @Keanor
    Ведущий разработчик
    $sorted = []; // Результирующий массив
            foreach ($lines as $line) { // $line[0] - old, $line[1] - new
                $sorted[$line[1]]['old'] = $line[1];
                $sorted[$line[1]]['new'][] = $line[0];
            }


    Если это не оно, то опишите конкретный набор входных данных (небольшой) и в какую конкретную структуру он должен быть преобразован, разберемся :)
    Ответ написан более двух лет назад
    1 комментарий
    Нравится 1 комментарий
  • Почему в Symfony 3.4 через cli маппятся связи, а через web нет?

    Keanor
    Ширшов Александр @Keanor
    Ведущий разработчик
    Почему-то некорректно маппит имя свойства со статусом. Попробуйте name для связи со статусом явно задать.
    Ответ написан более двух лет назад
    1 комментарий
    Нравится 1 комментарий
  • Как распарсить на php эти данные?

    Keanor
    Ширшов Александр @Keanor
    Ведущий разработчик
    $arr = parse_str('тут ваша строка монстр');

    А дальше уже с конкретными ключами массива $arr работать, найдите нужный элемент и скорее всего через json_decode его пропустите (лень проверять). Пишите что получается, поможем :)
    Ответ написан более двух лет назад
    Комментировать
    Нравится Комментировать
  • Как правильно организовать grep?

    Keanor
    Ширшов Александр @Keanor
    Ведущий разработчик
    сравнение строк каким-то образом можно сделать через утилиту diff
    Ответ написан более двух лет назад
    Комментировать
    Нравится Комментировать
  • Почему не пускает на сервер?

    Keanor
    Ширшов Александр @Keanor
    Ведущий разработчик
    Проверьте из под какого пользователя запускается apache, и что у этого пользователя есть доступ к директории которая в виртуальном хосте апача прописана как корневая.
    Ответ написан более двух лет назад
    4 комментария
    Нравится 4 комментария
  • Можно ли без лишнего изврата выводить красивую страницу при ошибке PHP?

    Keanor
    Ширшов Александр @Keanor
    Ведущий разработчик
    Если у вас единая точка входа, то проще там в try {} catch {} обернуть, и используемым шаблонизатором отрендерить, попутно сохранив информацию об исключении и каких-нибудь дополнительных данных.

    На уровне nginx можно решить путем error_page 500 /500.html на уровне server
    Ответ написан более двух лет назад
    2 комментария
    Нравится 1 2 комментария
  • Как совместить запуск php скриптов из разных директории?

    Keanor
    Ширшов Александр @Keanor
    Ведущий разработчик
    А с чем собственно проблема?

    Nginx тут не причем, все запросы должны идти в index.php, а оттуда с проверкой прав подключаться нужные скрипты, если разруливать через nginx у вас конфигов будет больше чем кода на php.

    Определять что подключать через $_SERVER['REQUEST_URI'].

    Проверять наличие файла нужно через file_exists

    Запускать можно простым include (тут есть варианты, если нужно).

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

    Keanor
    Ширшов Александр @Keanor
    Ведущий разработчик
    Вам нужно реализация высокого уровня абстракции? Не думаю что такие есть, ведь в данной реализации необходима завязка на обработку http запросов, работу с БД, вывод ошибок, работа с конфигами (логин/мыло/валидация? в каком виде хранить пароль и.т.д.), и в каждом framework/cms своя реализация, и в рамках этой реализации такие библиотеки доступны и имеют смысл.

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

    Или выбирайте фреймворк, чем больше у вас подобных задач возникнет, тем меньше времени вы потратите на разработку.
    Ответ написан более трёх лет назад
    Комментировать
    Нравится 2 Комментировать
  • Как изменить регулярное выражение?

    Keanor
    Ширшов Александр @Keanor
    Ведущий разработчик
    /{[^ \t\r\n}"]+}/
    Ответ написан более трёх лет назад
    Комментировать
    Нравится Комментировать
  • В json ответе ковычки нужно декодировать в PHР?

    Keanor
    Ширшов Александр @Keanor
    Ведущий разработчик
    Яб закостылил ;)
    function no_json_decode($encoded) {
    	$decoded = [];
    	foreach (explode('","', trim($encoded, '{}')) as $element) {
    		list($key, $value) = explode(':', $element);
    		$decoded[trim($key, '"')] = trim($value, '"');
    	}
    
    	return $decoded;
    }


    Результат:
    Array
    (
        [tx] => 5204759
        [status] => SUCCESS
        [date] => 04.07.2017
        [time] => 21
        [cash] => 7 210,00руб.
        [orig] => 7 000,00руб.
        [provider] => WebmoneyОАОБанк"ККБ
        [opnum] => R14702331
        [comment] => 
    )


    Можно поиграть чтобы спасти последнюю кавычку в наименовании банка
    Ответ написан более трёх лет назад
    1 комментарий
    Нравится 1 комментарий
  • Как правильно запаковать байты?

    Keanor
    Ширшов Александр @Keanor
    Ведущий разработчик
    php.net/manual/ru/function.pack.php
    Ответ написан более трёх лет назад
    Комментировать
    Нравится 1 Комментировать
  • Как вытащить объект из цикла?

    Keanor
    Ширшов Александр @Keanor
    Ведущий разработчик
    Выскажись по человечески, что тебе надо.

    Тебе надо поменять область видимости переменной $queries? Над циклом добавить $queries = null;

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

    Если тебе нужно "объект пагинатора" для всех категорий, то все совсем не так.
    Если тебе нужен "объект пагинатора" для одной категории, то ищи одну и не все дочерние

    Объект, который понимает пагинатор, не доктриновский CollectionInterface случайно?
    Ответ написан более трёх лет назад
    2 комментария
    Нравится 2 комментария
  • Каким образом реализовать пошаговый импорт из xml?

    Keanor
    Ширшов Александр @Keanor
    Ведущий разработчик
    Однажды реализовывал чтение xml, с парой миллионов записей. XmlReader вам в помощь, он он чуть посложнее чем simplexml :)
    Ответ написан более трёх лет назад
    1 комментарий
    Нравится 1 комментарий
  • Совет по оптимизации работы парсера на php и сервера?

    Keanor
    Ширшов Александр @Keanor
    Ведущий разработчик
    Показатели нормальные, не отрицательные, циферные.

    Один из основных инструментов распределения нагрузки: www.phphighload.com/2013/08/amqp-rabbitmq.html

    Оно вам поможет, когда этого сервера будет не хватать.
    Часть обработчиков безболезненно можно будет перенести на другой.
    Это-же поможет локализировать профайлинг, и измерять производительность отдельного обработчика.

    + есть полезная фишка для парсеров, если не получается получить страницу (сеть при парсинге штука не надежная), можно просто падать с ошибкой и задача будет возвращена в очередь.
    Ответ написан более трёх лет назад
    1 комментарий
    Нравится 1 1 комментарий
  • Symfony и Redis почему теряются данные?

    Keanor
    Ширшов Александр @Keanor
    Ведущий разработчик
    Скорее всего что-то с сериализацией, продебажте строку которая уходит в редис, и проверьте есть ли там email. Возможно ли что эмейл проставляется после отправки данных в редис? Редис сам по себе кусочно данные из кэша вырезать не должен.
    Ответ написан более трёх лет назад
    Комментировать
    Нравится Комментировать
  • Symfony и Redis почему сохраняемый объект не равен полученному из кэша?

    Keanor
    Ширшов Александр @Keanor
    Ведущий разработчик
    Включайте перехватчик варнингов перед сериализацией, и ловите эти ошибки. Там где вы их поймаете у вас будет достаточно информации для того чтобы понять что произошло. Да и бесмысленное сохранение не сделаете.
    Ответ написан более трёх лет назад
    Комментировать
    Нравится Комментировать
Оценили как «Нравится»
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • Следующие →
Самые активные сегодня
  • Василий Банников
    • 12 ответов
    • 0 вопросов
  • Дед Герасим
    • 7 ответов
    • 2 вопроса
  • 0xD34F
    0xD34F
    • 8 ответов
    • 0 вопросов
  • ky0
    ky0
    • 6 ответов
    • 0 вопросов
  • hint000
    hint000
    • 6 ответов
    • 0 вопросов
  • TNPTSYWWCC
    Uneasy Hearts Weigh the Most
    • 6 ответов
    • 0 вопросов
  • © Habr
  • О сервисе
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации