• Как создать ленивую колекцию в laravel на больших данных?

    @Stalinko
    PHP'шник и фрилансер до мозга костей
    Кажется, вам нужны генераторы: https://www.php.net/manual/ru/language.generators.php
    Ответ написан
    2 комментария
  • Где найти дистрибутив Zoom для i386?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    deb-пакеты устанавливаются с помощью dpkg -i.
    Ответ написан
    1 комментарий
  • Интеграция php с Excel-макросом?

    Adamos
    @Adamos
    Убедите "разработчиков" отказаться от технологий прошлого века и сделать онлайн-калькулятор. С API, если им пользуется еще кто-то. Через год они сами будут вам благодарны за эту эволюцию, так что для убеждения можно использовать шантаж и пытки.
    Ответ написан
  • Можно ли с помощью Kafka объединять результаты задач на базе общего id?

    Vamp
    @Vamp
    Вашу задачу в такой постановке вполне можно решить. Вот только склеиванием результатов придётся заниматься вручную.

    Создайте топик с результатами и в качестве ключа возьмите order_id. Далее считывайте результаты из топика и складывайте в коллекцию Map<Integer, Set<TaskResult>> (где Integer - order_id). Как только количество элементов в Set станет равным количеству ранее отправленных задач по данному order_id - можно считать, что все ответы получены и передавать их все разом на дальнейшую обработку.

    Останется только продумать крайние случаи. Например, нельзя до бесконечности ждать поступления всех результатов - external api может не ответить, а локальная задача вылететь с эксепшеном и не сгенерировать TaskResult. В этом случае количество ответов будет меньше количества отправленных задач. Придется прикручивать таймауты и/или отправлять задачи повторно. А что делать если вдруг ответов поступит больше, чем отправлялось запросов?

    Плюс ещё вопрос когда коммитить офсеты. Если сразу, то возникает опасность получить только половину результатов. Например, если сборщик результатов крашнется после того как соберёт первую половину и закоммитит её, то после рестарта он вычитает только вторую половину и никогда не соберёт полный ответ.

    Можно создавать отдельный топик под каждый order. Здесь упрощается обработка некоторых corner кейсов, но возникает проблема если order'ов много (сотни тысяч - миллионы).

    С kafka streams не работал, но бегло пробежав по документации, могу предположить, что комбинация groupByKey() + reduce() может решить вопрос меньшим количеством кода, чем у предыдущих двух вариантов.
    Ответ написан
    2 комментария
  • Чем можно заняться по дороге на работу?

    @d-sem
    Расслабляться, рефлексировать.

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

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

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Единственное что из этого доступно в паблике - блокчейн. Нагуглить можно любые статьи, ролики и даже книги. Одним ресурсом тут не обойтись. Что до остального - там надо знать 2 темы; безопасность и гарантированная доставка (при чем exactly one delivery). Можно ещё про транзакции в распределённых системах
    Ответ написан
    4 комментария
  • Почему файл всё равно выполняется если даже у него убраны все права?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    потому что это не исполняемый файл

    Исполняемый файл это файл который исполняет операционная система.
    в данном случае РНР файл исполняется не операционной системой, а веб-сервером, и права на исполнение к нему не имеют отношения вообще никакого
    Ответ написан
    1 комментарий
  • Как временно выделить больше памяти php для выполнения composer install?

    @bkosun
    Кроме настроек PHP Composer также соблюдает ограничение, которое определено в COMPOSER_MEMORY_LIMIT:

    Можно убрать все ограничения примерно так:

    Windows:
    set COMPOSER_MEMORY_LIMIT=-1 && php -d memory_limit=-1 composer.phar <...>

    Linux:
    export COMPOSER_MEMORY_LIMIT=-1 && php -d memory_limit=-1 composer.phar <...>


    https://getcomposer.org/doc/articles/troubleshooti...
    Ответ написан
    Комментировать
  • Как регулируется правомерность вопросов, связанных с отладкой кода?

    Любой технический вопрос можно удалять с формулировкой: "Если у тебя есть проблема, то ты либо не читал документацию, либо не хочешь думать". Тогда останутся лишь ведущие к дискуссии, которые тоже запрещены.

    Помимо обычной потребности делиться знаниями, на вопросы отвечают, потому что они интересны и отвечающим тоже.

    Помогая другим, можно прокачаться самому, в той же отладке, или изучить проблему которая поднялась в вопросе. Если это вам не нужно просто пройдите мимо. Возможно для кото-то станет интересна та же проблема.

    И по-моему нет разницы связан вопрос с отладкой или нет. Для кого то найти 1 символ опечатки в 10 строках кода будет быстрее, чем прочитать 1,5 экрана текста, обдумать, и написать ответ.
    Ответ написан
    1 комментарий
  • Как регулируется правомерность вопросов, связанных с отладкой кода?

    @posters
    В результате вопрос практически сводится к "сделайте плиз отладку за меня".

    Но, простите, что?! Не слышал про отладку вообще? А кто тогда автор вопроса такой? Он программист или кто? Или кто?

    Прежде всего, он человек!
    Он человек, который решил обратиться за помощью.
    Человек, это нечто большее, чем просто винтик в системе, который по мере взросления повышает компетентность и совершенствуется, чтобы становиться все более полезным для системы и все менее заменяемым. Человек обладает не только разумом, но и чувствами. О последнем многие забывают. А ведь именно это делает каждого уникальным, внося иррациональность в поведение и восприятие мира. Это то индивидуальное начало, которое раскрывается в контексте социальных отношений и делает из человека личность.
    Что означает быть человеком? Современные словари ставят знак равенства между человечностью и гуманностью, утверждая, что эти слова синонимы. Гуманность же, в свою очередь, тесно связана с гуманизмом. Это философско-исторический термин. В определенный момент человек, реализующий свои возможности и развивающий достоинства, стал ценностью. Быть человечным и гуманным, значит помогать не потому что просящий этого заслужил, а просто за то, что он человек и нуждается в твоей помощи. Человек достоин помощи уже за то, что обладает индивидуальным началом, отличающим его не только от животных, но и от других людей.

    Ведь если автора послать набираться опыта или учиться, то это НИКАК не решит данную конкретную проблему, которую ОН считает проблемой здесь и сейчас.

    Здравая мысль.
    Есть прошлое и будущее, но, в контексте настоящего, значимой для человека проблемой может быть именно та, с которой он пришел на Тостер. Эта проблема, если ее вовремя не решить, может решиться сама собой, стать не актуальной, маловажной, а может стать основанием для кома из проблем, которые в конечном итоге окончательно испортят человеку жизнь и забьют гвозди в крышку гроба.

    Более того, если автор рассматривает данный ресурс, как источник бесплатных программистов, которые на другом конце провода будут делать за него отладку (то есть по сути работать на автора), то в таком случае пропадает и само желание отвечать.

    Вы не можете точно знать намерения другого человека. Вы можете лишь делать прогнозы, основываясь на той информации, которой располагаете. Учитывая, что это интернет-ресурс, вы можете вообще ничего не знать об авторе, кроме вопроса и его ника, а значит и строить прогнозы бессмысленно. Кроме того, существует такая вещь, как "фундаментальная ошибка атрибуции". Это склонность человека объяснять поведение других их индивидуальными особенностями, а своё поведение - ситуацией, внешними обстоятельствами.

    Самое интересное, что некоторые вопросы действительно достойны того, чтобы на них ответить. Это вопросы, в которых содержится некий парадокс.

    Можете отвечать только на те вопросы, которые нравятся ЛИЧНО ВАМ. Другой человек может найти интересным ДЛЯ СЕБЯ те вопросы, что вы нашли банальными и скучными, например, такие, которые вы описали в этой теме. Вы забываете, что каждый человек индивидуален.
    Ответ написан
    3 комментария
  • Почему градиент в svg странно накладывается?

    @twolegs
    fill применяется к каждому svg-объекту по отдельности, поэтому получается такой эффект.
    Думаю, одним из самых простых решений будет использование маски.
    То есть создаете один большой объект, который заливаете градиентом, а саму svg используете как маску для этого объекта.
    Ответ написан
    Комментировать
  • Чем проверить существование почтового ящика?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Нет гарантированной проверки существования емайла массово.
    Если вы отправили письмо, и не получили в ответ ошибку - вы можете с высокой вероятностью предполагать, что почтовый ящик существует, на этом все.

    Но, в условиях борьбы со спамом, используются разные методы.
    Отказ на конкретные адреса, домены (поэтому известных сервисов проверки существования емайлов быть не может - их сразу в черный список занесут).
    Анализ вашего письма и отказ по разбору с подозрением на спам.
    Анализ вашего письма и полное молчание в ответ, чтобы оставить меньше информации. Само письмо при этом может как дойти до адресата, так и в /dev/null

    Единственный рабочий способ - с активным участием пользователя. Отправляете в письме уникальную реферральную ссылку (желательно со сроком годности, например неделя максимум). Если по ней в течение указанного срока зашли - отмечаете, что этот емайл был подтвержден.
    Ответ написан
    Комментировать
  • Как сделать отступы в комментарии qna.habr.com?

    5faad6e411c1a077117685.png
    Ответ написан
    Комментировать
  • Как сообщить EntityManager о сущности?

    BoShurik
    @BoShurik Куратор тега Symfony
    Symfony developer
    https://symfony.com/doc/current/components/seriali...

    Это можно обернуть в какой-нибудь кастомный нормалайзер
    use Doctrine\ORM\EntityManagerInterface;
    use Symfony\Component\Serializer\Normalizer\AbstractObjectNormalizer;
    use Symfony\Component\Serializer\Normalizer\DenormalizerInterface;
    use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
    
    class MyObjectDenormalizer implements DenormalizerInterface
    {
        private ObjectNormalizer $objectNormalizer;
        private EntityManagerInterface $entityManager;
    
        public function __construct(ObjectNormalizer $objectNormalizer, EntityManagerInterface $entityManager)
        {
            $this->objectNormalizer = $objectNormalizer;
            $this->entityManager = $entityManager;
        }
    
        public function denormalize($data, string $type, string $format = null, array $context = [])
        {
            if ($id = $data['id'] ?? null) {
                $object = $this->entityManager->getRepository($type)->find($id);
                $context = [
                    AbstractObjectNormalizer::OBJECT_TO_POPULATE => $object,
                ];
                unset($data['id']);
            }
    
            return $this->objectNormalizer->denormalize($data, $type, $format, $context);
        }
    
        public function supportsDenormalization($data, string $type, string $format = null)
        {
            return $this->objectNormalizer->supportsDenormalization($data, $type, $format);
        }
    }


    Но лучше подставлять объект в контроллере на основании данных из роута (/comment/{id}/edit), т.к. есть возможность подменить id и отредактировать другую сущность (к которой, к примеру, у пользователя доступа нет)
    Ответ написан
    1 комментарий
  • Почему не получается запустить приложение через docker?

    @krundetz
    А запускать в production вы его тоже будете на встреном в php сервере?
    Раз уже докер используете то используйте сервер приложений php-fpm 7.4, а в качестве веб сервера nginx 1.19. (Ну или постарайтесь воспроизвести ту комбинацию на которой приложение будет работать в production)
    Меньше потом сюрпризов будет, ведь вы о них узнаете в процессе разработки.
    Для docker-compose конфиг будет выглядеть как то так:
    version: '2'
    services:
        nginx:
            image: nginx:1.19
            ports:
                  - "80:80"
            volumes:
                - ./path_to_nginx_config:/etc/nginx/conf.d
                - ./path_to_app:/var/www/app
            links:
                - php
        php:
            image: php:7.4-fpm
            ports:
                - "9000:9000"
            volumes:
                - ./path_to_app:/var/www/app
    Ответ написан
    1 комментарий
  • Что нужно сделать чтобы объявления, которые выставляются в другом интернет магазине, копировалась в мой интернет магазин?

    hottabxp
    @hottabxp
    Сначала мы жили бедно, а потом нас обокрали..
    Вариантов несколько:
    1) Договорится с владельцем магазина, пусть он сделает api;
    2) Нанять фрилансера, он всё сделает за вас.
    3) etc
    Ответ написан
    Комментировать
  • Где брать картинки по типу 1000x1000 для верстки?

    @MadridianFox
    Web-программист, многостаночник
    Ответ написан
    Комментировать
  • Как настроить систему банов и предупреждений на своём сайте?

    Sanes
    @Sanes
    Бан, это по-простому перенос в другую группу с ограниченными правами.
    Ответ написан
    Комментировать
  • Как называется вставка переменных в строку с помощью фигурных скобок?

    Alexandre888
    @Alexandre888
    Javascript-разработчик
    let first = "five", second = "six"
    let string = `${first} + ${second} = 11`


    называется "строковая интерполяция"
    Ответ написан
    Комментировать