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

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

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

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

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

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

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

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

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

Dmitry MiksIr

IT
  • 66
    вклад
  • 0
    вопросов
  • 71
    ответ
  • 41%
    решений
Ответы
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • В каком случае нужно отказаться от composer autoload и использовать spl_autoload_register?

    Dmitry MiksIr @miksir
    IT
    Если используется композер - то свои автолоады крайне не желательны, ибо вносят долю хаоса. Конечно, исключения возможны, например, автоматическое генерирование классов на из запросе и что-то подобное, но, имхо, даже это можно сделать используя стандартные схемы автолоада. А на крайний случай, да, можно использовать свой spl_autoload_register, но и тот я бы советовал подключать через files автолоада композера
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Как организовать синхронизацию локальной копии кода между разными машинами (между коммитами)?

    Dmitry MiksIr @miksir
    IT
    Да, есть вариант научиться пользоваться гитом и начать использовать его для разработки, а не для "защиты от вредоносов"
    Ответ написан более трёх лет назад
    22 комментария
    22 комментария
  • Как решить проблему типов при отношении многие ко многим?

    Dmitry MiksIr @miksir
    IT
    • У вас неверный EAV. Value должно быть в product_option, иначе нарушается нормальная форма.
    • EAV вообще так себе паттерн, его даже часто называют анти-паттерном, и не только из-за проблем с типами, но и из-за проблем с фильтрацией по нескольким условиям.
    • Типы в EAV решают кто во что горазд. Кто-то отдельными таблицами, кто-то отдельным полем с указанием типа (и большой varchar value), кто-то просто текстом.


    Советую посмотреть вот эти слайды
    https://www.slideshare.net/billkarwin/practical-ob...
    https://www.slideshare.net/billkarwin/sql-antipatt...
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
  • Как проверить есть ли файл на сервере(nginx)?

    Dmitry MiksIr @miksir
    IT
    location / {
      proxy_pass http://a.a.a.a;
      proxy_intercept_errors on;
      error_page 404 = @server2;
    }
    
    location @server2 {
      proxy_pass http://b.b.b.b;
    }
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как делают такие ограничения?

    Dmitry MiksIr @miksir
    IT
    Вы определитесь с целью.

    Если вы хотите давать разные виды доступа (с разными лимитами) разным пользователям - то да, считать. Не по IP, конечно, а по ключу/логину и т.п. Хранить в базе соответствующие показатели, накапливать запросы и пересчитывать счетчики с какой-то периодичностью. Если нагрузка мала - можно и на каждый запрос считать.

    Если цель - защитить скрипт от флуда - это делается на уровне веб-сервера или даже фаирвола. Но в таких случаях не стоят задачи "до 1000 запросов в день", там стоят задачи "N запросов в секунду". Для nginx, например, модуль ngx_http_limit_req_module.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Nginx: https to https?

    Dmitry MiksIr @miksir
    IT
    По сути https - https работает через расшифровку и повторную шифровку, т.е. сертификаты должны быть и на nginx. Посмотрите пример любого ssl сервера на nginx.

    Как вариант еще, если nginx только для балансировки, использовать haproxy, он умеет балансировку SSL без расшифровки https://www.haproxy.com/blog/enhanced-ssl-load-bal...
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Стал работать по часам и обнаружил, что выходит 6 часов в день. Это нормально?

    Dmitry MiksIr @miksir
    IT
    По ТК вы должны работать 8 часов. По санпину - каждый час должен быть предоставлен отдых на 15 минут. Т.е. как миниум полтора часа уйдет на отдых (не считая обеда). Остальное, по идее, вы должны работать. То, что тут пишут про "4 часа" - это обычное нытье посредственности. Просто научитесь отдыхать и расслабляться в эти 15 минут и менять задачи по ходу дня. Если задача одна и объемная - для разбавления рутины выделяйте время на ревью своего кода, рефакторинг и т.п.
    Если вас перевели на рабочем месте на почасовую оплату, то поинтересуйтесь - как будут оплачиваться отдых, если никак - просто требуйте поднять ставку часа.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как сделать умный поиск товаров по сайту?

    Dmitry MiksIr @miksir
    IT
    Вот тут все популярные способы https://habrahabr.ru/post/114997/
    Наиболее популярный - N-грамм метод. Готовые реализации есть в mysql 5.7 и postgresql. Впрочем, и самому сделать реализацию весьма просто.
    Ну и в добавок к этому я бы предложил вбивать не только оригинальное название, но и звучания на русском и английском в отдельных полях хранить и использовать их для поиска тем же три-граммом.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Что значит "знание linux" в вакансиях на позицию веб-разработчика?

    Dmitry MiksIr @miksir
    IT
    Думаю под знанием linux подразумеваются базовые знания пользователя, такие как:
    • отличие наименования файлов (case-sensitive, slash), символьные ссылки, как работают права доступа, как запускаются скрипты.
    • основы шела, путешествие по файловой системе, основные команды (типа ls, mkdir, mv, rm, grep, tail, head, и т.п., пайпы и редиректы, sleep и bg процессов)
    • представлять, что такое процесс, базовые вещи по управлению ими (ps хотя бы).
    • что такое крон, как им управлять.


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

    Dmitry MiksIr @miksir
    IT
    То, что вы говорите - называется патерном Identity Map и реализовано в некоторых ORM системах, например, в Doctrine.

    > Вот вопрос, как сделать так, чтобы можно было использовать единый метод для получения объектов user?

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

    > Или все-таки это правильно, создавать новый объект в каждом запросе

    Правильно, имхо, что бы был только один объект с одним идентификатором, а если нужно иное поведение - сказать это отдельно.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как шифруются пароли md5?

    Dmitry MiksIr @miksir
    IT
    Нет, не так. Вот как:
    При регистрации пользователь вводит пароль к примеру 123, он хешируется через password_hash. Далее, при аутентификации пользователь вводит пароль 123, из базы по логину достается сохраненный хеш, и проверяется через password_verify.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как реализовать оффлайн-синхронизацию двух PostgreSQL-баз?

    Dmitry MiksIr @miksir
    IT
    Если вторая база у вас только для чтения, то пойдет встроенный механизм hot standby
    https://www.postgresql.org/docs/current/static/hot...
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как перенаправить несколько location на разные сервера?

    Dmitry MiksIr @miksir
    IT
    location /one {
                proxy_pass http://ipone:portone/;
                proxy_set_header X-Real-IP $remote_addr;
            }
    location /two {
                proxy_pass http://iptwo:porttwo/;
                proxy_set_header X-Real-IP $remote_addr;
            }

    Обратите внимание на слеш в конце адреса бекенда. Именно он показывает необходимость реврайта URI запроса. Учтите, что этот реврайт никак не влияет на само тело запроса (т.е. если у вас вернется html со ссылкой a href="/", то она такой и останется)
    Ответ написан более трёх лет назад
    6 комментариев
    6 комментариев
  • Как запросить несколько Постов вместе с тэгами в Doctrine/Symfony?

    Dmitry MiksIr @miksir
    IT
    Попробуйте использовать пагинатор
    docs.doctrine-project.org/projects/doctrine-orm/en...
    Или можете проделать описанное там сами в репозитории.
    Ответ написан более трёх лет назад
    3 комментария
    3 комментария
  • Правильно ли использовать __call так?

    Dmitry MiksIr @miksir
    IT
    __сall вызывается только если метода в классе нет, по-этому в вашем случае будете разное поведение при обращении к объекту извне и при обращении внутри класса, что не есть хорошо.
    Ради экономии одной строчки с return такое не стоит делать.
    Если уж делать, то полностью магию убрав setPreset вообще, или используйте IDE, который умеет генерить fluent setter
    Ответ написан более трёх лет назад
    3 комментария
    3 комментария
  • NGINX | Как отдать другой файл?

    Dmitry MiksIr @miksir
    IT
    location = /text/first.php {
    alias /path/home/123.txt;
    }

    /path/ - физический путь на сервере
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
  • Как запустить межбазовый SQL запрос PHP / PDO?

    Dmitry MiksIr @miksir
    IT
    То, что в MySQL называется "база данных" - это не совсем базы данных в понимании других СУБД, а не более чем схемы. Это позволяет без проблем делать запросы между ними, равно как и в других СУБД вы можете это делать между схемами. А база данных в понимании баз данных других СУБД у MySQL всегда одна, так что и подключение как бы всегда к ней.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как убрать родительский тег P у картинки?

    Dmitry MiksIr @miksir
    IT
    Через дом, конечно, можно. Но это может быть довольно затратно, а так как эти теги вставляет ваш редактор (т.е. структура достаточно детерминирована), то много проще обойтись регекспом.
    preg_replace('/<p>(<img[^>]+>)<\/p>/', '$1', $html)
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Масштабирование как способ тестирование верстки - бред?

    Dmitry MiksIr @miksir
    IT
    Я вот добавлю. Адаптивная верстка вообще как раз и нужна для того, что бы сайт на меньших экранах выглядел не так, как его просто масштабировали, а более адаптивно ;)
    Т.е. не так
    7cc797679efa41e39c283a7ee748d432.png
    А вот так
    28b5b4a71bbd48598ce6ad33f78957ee.png
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Doctrine DQL: как выбрать объекты из двух таблиц с разными условиями?

    Dmitry MiksIr @miksir
    IT
    Если вам нужен результат - то два запроса. Если вам гланды через зад, то docs.doctrine-project.org/en/latest/reference/nati...
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
Оценили как «Нравится»
  • 1
  • 2
  • 3
  • 4
  • Следующие →
Самые активные сегодня
  • Drno
    • 9 ответов
    • 0 вопросов
  • Евгений
    • 8 ответов
    • 0 вопросов
  • rPman
    • 8 ответов
    • 0 вопросов
  • dimonchik2013
    Dimonchik
    • 8 ответов
    • 0 вопросов
  • AlexNest
    Александр Нестеров
    • 8 ответов
    • 0 вопросов
  • Rst0
    Rst0
    • 6 ответов
    • 0 вопросов
  • © Habr
  • О сервисе
  • Обратная связь
  • Блог

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

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