• Как загрузить роутинги сразу из нескольких файлов?

    BoShurik
    @BoShurik Куратор тега Symfony
    Symfony developer
    Если вы знаете расположение конфигов, то можно так:
    use Symfony\Component\Config\FileLocator;
    use Symfony\Component\Routing\Loader\YamlFileLoader;
    use Symfony\Component\Routing\RouteCollectionBuilder;
    
    require_once __DIR__.'/../vendor/autoload.php';
    
    $locator = new FileLocator([__DIR__.'/../data']);
    $loader = new YamlFileLoader($locator);
    
    $builder = new RouteCollectionBuilder($loader);
    $builder->import('dir1/routes.yaml');
    $builder->import('dir2/routes.yaml');
    
    $routes = $builder->build();
    var_dump($routes);


    Если расположение конфигов неизвестно или вы просто не хотите заморачиваться при добавлении новых:
    use Symfony\Component\Config\FileLocator;
    use Symfony\Component\Config\Loader\DelegatingLoader;
    use Symfony\Component\Config\Loader\LoaderResolver;
    use Symfony\Component\Routing\Loader\GlobFileLoader;
    use Symfony\Component\Routing\Loader\YamlFileLoader;
    use Symfony\Component\Routing\RouteCollectionBuilder;
    
    require_once __DIR__.'/../vendor/autoload.php';
    
    $locator = new FileLocator([__DIR__.'/../data']);
    $resolver = new LoaderResolver([
        new GlobFileLoader($locator), // needs symfony/finder
        new YamlFileLoader($locator),
    ]);
    $loader = new DelegatingLoader($resolver);
    
    $builder = new RouteCollectionBuilder($loader);
    $builder->import('**/*/routes.yaml', '/', 'glob');
    
    $routes = $builder->build();
    var_dump($routes);
    Ответ написан
    Комментировать
  • Как спарсить выдачу Яндекс.Карт?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    НИКАК.
    ВЫ задрали уже любители дармовщинки.
    Из-за вас сервисами яндекса уже невозможно пользоваться - он все время показывает капчу, которую хрен прочтешь.
    Причем яндекс и так дает на халяву, через апи. Но нет - мы нос воротим, мы лучше будем мелочь по карманам тырить, и гадить всем вокруг.

    Попробуй хоть раз в жизни сделать что-то своё, а не пытаться тырить чужое.
    Ответ написан
  • Из JSON в js массив?

    irishmann
    @irishmann
    Научись пользоваться дебаггером
    Нет. Зачем к массиву обращаться как к объекту?

    obj['products'][0]['amount']
    Ответ написан
    Комментировать
  • Альтернатива EAV, структура базы?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Обычно для интернет-магазинов EAV структура приблизительно следующая:
    Категория (* — *) Опция ( 1 — *) Значение ( * — 1 ) Продукт
    Поиск товаров допустим реализуется через INNER JOIN и создает довольно большие накладные расходы. Это единственный, и довольно существенный минус этого подхода. Решается он использованием вьюх в базе данных, или же NoSQL решений. Так же есть варианты использовать фасеточный поиск, например через Sphinx. Но гибкость разработки как по мне довольно большой плюс.

    В вашем случае, если реализовать ваш вариант с таблицей дескриптеров, получается такая структура:
    Товар (* — *) Значение ( 1 — * ) Дескриптер.
    Причем, если значения дескриптеров вам известны, то логично вынести это скажем в ENUM или еще как. По сути это не есть паттрен EAV, это просто одна из тех самых альтернатив.

    Поиск по такой структуре так же будет реализован через INNER JOIN (хотя можно и по другому, но по идее все упирается только в индексы, и от способа поиска производительность не сильно будет различаться) и все равно будет медленнее нежели через вью или просто из таблицы.
    Ответ написан
    Комментировать
  • Почему не могу в middleware установить новое значание в сессии?

    JhaoDa
    @JhaoDa
    LaravelRUS Team
    А ты видишь в списке глобальных мидлварь ту мидлварю, которая стартует сессию и которая находится в группе web? Вот и я не вижу. Намёк достаточен?
    Ответ написан
    5 комментариев
  • Как делать сложные запросы используя репозитории и объединение разных таблиц?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    решением этой несложной задачки.

    Уважаю такой оптимизм.

    Проблема эта не нова. Называется она object-relational impedance mismatch и очень многие считают её в принципе нерешаемой, сравнивая её с проигранной США войной во Вьетнаме.
    Так что можно надеяться на что угодно, только не на простое решение. Но сначала надо проблему осознать. Что отображение объектов на реляционную базу, которое называется object-relational mapping, сокращённо ORM, никогда не бывает простым.

    Отдельно этой теме добавляет остроты терминология. Спроси 10 разных разработчиков что они имеют в виду под репозиторием и под маппингом, и получишь 20 разных мнений. Так что использовать красивые слова следует с очень большой осторожностью.

    К примеру, "нерешаемость" проблемы с impedance mismatch относится к попыткам сделать универсальный ORM, который на вход получает имя любого класса, а на выходе коллекцию объектов. Про такой вариант можно действительно забыть (привет, элоквент-элоквент - и в продакшен!). Но вот полуавтоматическое решение вполне можно накостылить. Главное всегда помнить о проблеме, и как только автоматический маппинг перестаёт работать - тут же от него оказываться в пользу ручного колупания с запросами. Главное этого не бояться и не загонять себя в клетку словами "репозиторий", "один объект-одна таблица" и пр. У тебя есть задача - инстанцировать объект или коллекци объектов из БД. Окей, ты пишешь методы, которые это делают оптимальным способом, не важно - одна там таблица используется, 10 или еще плюс 2 кэша и носкл датабаза в придачу.
    Надо тебе сохранить объект или коллекци объектов в БД? Окей, пишешь метод, коорый делает это оптимальным способом. Да, это куча черной работы. Но зато у тебя будет чистая доменная логика (которая вообще никакого отношения к базе данных или "репозиториям" не имеет).

    Отдельно прекламирую Cycle ORM. Сам я ненастоящий сварщик, но взрослые дядьки говорят что она лучше всего подходит для нормально реализованного маппинга объектов на БД. Лучше чем Доктрина или прости-господи Элоквент. С нетерпением жду доклада автора на ПХПРаша.
    Ответ написан
    1 комментарий
  • Как вывести кириллицу UTF-8 из Java приложения в консоль Windows?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Посмотрите настройки. В моей версии windows 10 есть режим Utf-8 кроме этого можно переключить консоль на вывод нужной консоли командой

    chcp 1251
    Ответ написан
    Комментировать
  • Почему вызов функции быстрее чем вызов метода класса в PHP?

    @NinjaNickName
    Web разработчик
    Исследуем результат работы php-транслятора
    Разбор вызовов функций в PHP
    Виртуальная Машина PHP 7
    Подробно об объектах и классах в PHP

    Для понимания механизма вызова функции, необходимо знать две вещи:
    вызов функции и вызов метода — это одно и то же
    вызов пользовательской функции и вызов внутренней функции обрабатываются по-разному
    Ответ написан
    Комментировать
  • Как мне стать middle-frontend?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Года три старательно отработать в офисе.
    Ответ написан
    Комментировать
  • Как сделать массив немножко отсортированным?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Есть такой массив (50 элементов):
    Задача: написать функцию которая полностью отсортирует данные максимум за 6 вызовов, с условием что за 1 вызов ни один элемент не сместиться больше чем на 5 позиций.

    Очевидно, что задача в такой постановке в общем случае неразрешима, т.к. максимальный элемент стоящий первым должен сместиться в процессе сортировки в самый конец, т.е. на 49 позиций, а 49 > 6 * 5.
    Ответ написан
    1 комментарий
  • Event Sourcing Streams мониторинг?

    @MaLuTkA_UA
    Я для таких целей использую supervisor, он запускает процесс и сам за ним следит, если упал то может перезапустить если это написать в конфиге
    Ответ написан
    Комментировать
  • Почему вы отвечаете на вопросы?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Отвечая - познаю.
    Ответ написан
  • Работа после 11 класса?

    Kozack
    @Kozack
    Thinking about a11y
    Можно
    Ответ написан
    Комментировать
  • Работа после 11 класса?

    @Filipinnetc
    У нас после второго курса так сделали, в целом можно на первом.
    Ответ написан
    Комментировать
  • Как стать Java Middle Developer?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Во-первых, само разграничение на джуна, мидла и сеньора очень условное. Я видел примеры того, как сеньор из одной компании не тянул на джуна в другой. Обусловлено это может быть как разным уровнем требований к профессионализму сотрудника, так и степенью соответствия области знаний сотрудника области деятельности компании. Экосистема Java очень объёмна, даже в её пределах знать всё тяжело.
    Во-вторых, объективно оценить себя самостоятельно невозможно. И даже оценка со стороны тоже может быть не показательна, как я уже писал выше, в разных компаниях разные нормы. И серьёзность компании не показатель. Я видел супепрофессиональные отделы в региональных продуктовых магазинах и частных клиниках и видел огромные ИТ-службы полностью состоящие из профанов в федеральных банках и транснациональных торговых сетях.
    Решаются эти две проблемы относительно просто - смело претендуйте на большее. Естественно, вас попросят подтвердить ваш уровень. Если смогли, вы ему соответствуете. Если нет, готовьтесь лучше. И чем большему количеству людей вы сможете доказать свой уровень, тем более он объективен.
    Что касается развития и целей для дальнейшего роста, мозг развивается, если его напрягать. Нужно всё время практиковаться, всё время изучать что-нибудь новое, всё время искать дополнительные способы применить свои силы. Я часто слышу, что в маленькой компании нет возможности развиваться - это неправда. Как раз в кровавом энтерпрайзе приходится делать годами одно и то же и работать с махровым легайси, без возможности что-либо изменить без полугодового согласования экономического обоснования изменения. Маленькие компании на много более гибкие в выборе технологий и методов работы. К тому же, всегда есть возможность завести пет-проект. Чтобы выбрать технологий для пет-проекта, найдите все вакансии java-программистов на нескольких работных сайтах, отсортируйте по зарплате и в списке требований топовых позиций найдите то, чего не знаете. Потом повторите подобную операцию с фрилансерскими биржами.
    Ответ написан
    Комментировать
  • Какой проект может реализовтаь Junior а какой Middle?

    GavriKos
    @GavriKos
    Вопрос не в том - какой. Вопрос в том, насколько качественно, за какие сроки, насколько точно исходя из ТЗ (сюда еще баги попадают) и насколько поддерживаемо в будущем.
    Ответ написан
    4 комментария
  • Как исправить ошибку Can't use query methods that take a query string on a PreparedStatement?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Переменная preparedStat хранит подготовленный запрос, созданный вызовом метода prepareStatement, в неё нельзя передать другой запрос вызовом executeQuery.
    Ответ написан
    Комментировать