• Насколько безопасны SPA-приложения?

    erniesto77
    @erniesto77
    oop, rb, py, php, js
    Бэк должен проверять каждый запрос, валидный токен или нет (есть пакеты для Laravel которые все за вас делают)
    На фронте вы не сможете обеспечить безопаснось на 100%, только на бэке
    Ответ написан
    2 комментария
  • Насколько безопасны SPA-приложения?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Если бэкенд делал не дебил, то валидность данных и права пользователя проверяются при каждом запросе. Соответственно, злоумышленник меняет значение переменной, попадает в закрытый раздел, в котором ничего не работает.
    Ответ написан
    Комментировать
  • Зависает компьютер под нагрузкой. Ошибка Kernel-power 41(63) Что делать?

    @pfg21
    ex-турист
    поменять/отремонтировать блок питания.
    питающие напряжения просели под нагрузкой они проседают еще больше, комп сходит с ума.
    Ответ написан
    2 комментария
  • Raw PHP или Laravel для SPA на ReactJS?

    @dimuska139
    Backend developer
    Не надо писать свой движок. К нему не будет документации, его не проверяет сообщество, баги в нем будут всегда, и хорошо, если будут тесты. Достаточно гибким это решение тоже не будет. Поддерживать и сопровождать такие проекты потом невозможно. Чтобы на голом PHP написать проект с нуля и нормально, требуется колоссальный опыт и отличное знание шаблонов проектирования. Тем более, что все равно в проект вы будете подтягивать различные удобные библиотеки, которые и так используются в известных фреймворках. Например, Doctrine.

    То, что вы пишете "Нового разработчика можно обучить быстро за один день", на практике совсем далеко от реальности. Опять-таки потому, что для какого-нибудь Laravel есть отличная документация, а к самописному фреймворку не будет ничего. Особенно если разраб, который его создал, внезапно уволился.

    Я не говорю, что обязательно нужно использовать таких монстров как Laravel и Symfony для создания API, но микрофреймворк Slim вполне неплох. Насчет "у микрофреймворков также версии быстро меняются" не могу ничего сказать, по крайней мере, код с 3 версии Слима на 4 переносится без проблем. Ведь в том и суть микрофреймворка, что там кода, зависящего от него, почти и нет - вся ваша бизнес-логика независимая.
    Ответ написан
    Комментировать
  • Как задать клавиатуру из массива?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    use Telegram\Bot\Keyboard\Keyboard;
    $buttons = [
        ['qqq', 'www', 'eee'],
        ['rrr', 'ttt', 'yyy'],
        ['uuu', 'iii', 'ooo'],
    ];
    
    $keyboard = Keyboard::make()->setOneTimeKeyboard(false)->setResizeKeyboard(true);
    foreach($buttons as $row)
    {
        $keyboard->row(...$row);
    }

    обратите внимание на ТРОЕТОЧИЕ перед $row - https://wiki.php.net/rfc/argument_unpacking
    Ответ написан
    4 комментария
  • Насколько плохая идея использовать Python для создания браузерных игр?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    В качестве бэкенда - норм.
    На фронте питона нет. Разве что рассматривать какие-нибудь кустарные транспиллеры вроде такого: https://github.com/replit-archive/empythoned
    Но с ними вы намучаетесь так намучаетесь. Вернее, судя по тому какой и где вы задаёте вопрос, ничерта у вас не получится.
    Ответ написан
    Комментировать
  • Нужно ли дополнительно подключать библиотеку после установки?

    sHinE
    @sHinE
    веб-разработчик, php/js/mysql и сопутствующее
    Из документации.
    After installing, you need to require Composer's autoloader:
    require 'vendor/autoload.php';
    То бишь после установки надо подвлючить автолоадер композера. После этого библиотеки, установленные композером будут подключаться автоматически (при условии корректного использования неймспейсов)
    Ответ написан
    Комментировать
  • Правильно ли выбрасывать исключения в бизнес логике?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Ответ на вопрос из заголовка простой: исключение выбрасывается тогда, когда код не в состоянии выполнить работу, для которой он предназначен. Это простое правило, общее для программирования в целом, и безнес логика в этом смысле ничем не отличается от любого другого кода.

    Я бы разделил валидацию и создание заказа.
    Для валидатора ошибки введенных данных - это не исключителная ситуация, а соверешнно штатная.
    То есть можно проверить результат валидации простым условием, без всяких исключений.


    По зрелом размышлении я всё-таки сглашусь, что подход с выбросом исключения при валидации вполне может применяться.

    Но вот код, который лежит внутри catch(OrderException $ex){ является избыточным. Логирование ошибки и вывод стандартного сообщения клиенту - это то, что должен делать централизованный обработчик ошибок, который в любом случае должен присутствовать в приложении. То есть здесь этот код явно лишний.
    Ответ написан
    8 комментариев
  • Почему многие разработчики отказались от Grunt и перешли на Gulp?

    А просто набрать вопрос в гугле? На эту тему много древних статей, потому что и галп сейчас уже устаревает, почитайте про webpack или parceljs
    www.creative-seo.ru/blog/grunt-vs-gulp

    А на вопрос зачем? Началось все с CI/CD а закончилось унификацией процесса.
    В вашем случае вы завязываетесь на конфигурацию IDE, а что делать если над проектом работает много людей?
    Ответ написан
    4 комментария
  • Проверка данных массива. Почему часть else выполняется несколько раз?

    hzzzzl
    @hzzzzl
    let login = document.getElementById('login').value;
    let password = document.getElementById('password').value;
    
    const existingUser = users.find(u => u.login === login)
    
    if (!existingUser) {
      users.push(  { login, password }  )
    }


    отвечая на вопрос, смотри

    for (let i = 0; i <= users.length; i++) {
            // цикл выполнится много раз
            if (login == users[i].login && password == users[i].password) {
                // воу, мы нашли юзера!
                alert('ry-ry')
                debugger
            }else {
                // это не юзер, пишем в массив
                // а цикл ведь выполнится много раз
                users.push(
                    {
                        login: document.getElementById('login').value,
                        password: document.getElementById('password').value
                    }
                )
            }
        }
    Ответ написан
    Комментировать
  • Зачем использовать готовые решения?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Вопрос писать или не писать такую тривиальщину как роутер, сводится, в сущности, к вечному вопросу поддержки.

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

    Впрочем, это естественный процесс, который проходит каждый велосипедописатель, и по достижении этого порога радостно выкидывает велосипеды, заменяя на модули, поддержкой которых занимается сообщество.
    Ответ написан
    1 комментарий
  • Зачем использовать готовые решения?

    Когда начинал, везде предлагали брать готовое решение, а не изобретать свое чудо...
    Есть две полярных и при этом правильных точки зрения.

    Нужно писать своё, чтобы учиться (как вы описываете в вопросе). И чтобы понимать как работают готовые решения и почему именно так.

    Нужно использовать готовое в работе. Ваша поделка, если у вас мало опыта, будет малофункциональной, неподдерживаемой другими разработчиками и, скорее всего, дырявой и не будет иметь тестов. Всё это важно в мире реальной разработки.

    1. Экономия времени. Достаточно написать и после интегрировать в свои проекты...
    "Достаточно написать" обычно для велосипедов измеряется годами, с учётом всё новых и новых требований и найденных багов.

    2. Правильное решение. Соглашусь, но если практиковать свои навыки, разве у вас не получится также?
    Опять же - речь про годы практики.
    Ответ написан
    Комментировать
  • Как сделать изменение баланса каждые 12 часов с условием в БД?

    New_Horizons
    @New_Horizons
    Бред:
    php скрипт в кроне, который:
    1. Запрашивает из БД баланс
    2. Проверяет, меньше ли он 15
    3. Прибавляет 5, если нужно
    4. Записывает в БД новое значение.
    Ответ написан
    1 комментарий
  • Какая лучшая cms?

    Странный вопрос - вы же понимаете что вам будут советовать то с чем работают советчики. Даже те, кто работал со всеми тремя платформами, любят на самом деле что-то одно.
    Вот я бы раставил то что вы предлагаете ровно так же как стоят теги. При этом хочется отметить что Joomla вообще не CMS.
    Сам делал бы на Bitrix + Vue, но отказавшись от фронтальной части CMS. Т.е. использовал бы Buitrix как фреймворк и админку.
    Ответ написан
    3 комментария
  • Какие есть программы удаленного управления windows ( для игр)?

    saboteur_kiev
    @saboteur_kiev Куратор тега Windows
    software engineer
    Это разве не просто передача уже готовых кадров которые подготовила видеокарта ?

    Ну давай посчитаем, что такое передача готовых кадров.

    Берем простенькое 1980x1200, получаем 2376000 точек.
    На цвет (если нам нужен нормальный true color), уходит 4 байта. Получаем 2376000*4=9 мегабайт.
    это ОДИН кадр.
    Берем средненькую игру, где ты хочешь наверное 50-60 frames per second, получаем 540 мегабайт.
    В секунду.
    Это то, что нужно передать на удаленный компьютер, причем у тебя не целая секунда, а наверное по ту сторону не будут слишком рады, если игра будет лагать по полсекунды или даже четверть секунды.
    При скорости подключения в 1гбит у тебя в идеальнейшем случае будет 60-80 мегабайт в секунду, так что тут вообще не вариант.
    Какой у нас выход? Сжимать видео. Сколько у нас времени на сжатие видео? Даже секунды нет, иначе будут лаги. Даже сжав видео раз в 10, ты получишь 54 мегабайта в секунду, что впритык к 1 гбиту. И все равно маловато.

    В общем реал-тайм передача данных в хорошем разрешении, чтобы играть на удаленном компе практически нереальна.
    Поэтому либо хорошее качество и жуткие задержки (например ютуб трансляцию обычно смотрят с задержкой в несколько секунд или минут, и видео успевает быть пережатым хорошим алгоритмом, уменьши трафик раз в 20-50 или больше).

    Либо уменьшаем лаги, но сжиать надо быстрее (мощный проц, и плохое качество, так как не успеваем), плюс хитрые алгоритмы просчитывающие, чего не передавать (опять проц). Но все рано лаги будут приличные.
    Ну и 1980x1200 потихоньку отмирает, сейчас приходит 2560x1440 и 4к (4096 × 3072)

    А еще есть звук, который мы еще не считали, и который весит немало.
    Ответ написан
    7 комментариев
  • Много свойств в одном инфоблоке. Как лучше спроектировать структуру сайта?

    @RuComMarket
    Битрикс FullStack разработчик
    сразу отмечу неправильное видение Битрикса:
    проблема в компоненте bitrix:catalog*. По сути весь интернет магазин завязан на нем и поддерживает он только один инфоблок

    стандартный компонент - это контроллер, который показывает возможности работы с API Битрикса (модулями).
    минус стандартных компонентов: они сделаны под различные задачи, т.е. параметров там много, каждый параметр, это объем данных и обработка. итоговый массив данных содержит много не нужной информации.
    Можно создать разделы в ручную, но еще кучу компонентов завязано на этом компоненте.

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

    Highload-блок это отдельная таблица в базе данных и связать их с инфоблоками не состовляет проблем, в инфоблоке есть поле справочник, которое показывает как можно связать, но не обязательно использовать именно его, можно создать свое поле, или проще написать обработку связи в компоненте.
    Инфоблоки лучше использовать, когда есть необходимость использования стандартных полей инфоблока или функционал завязанный на них, например модуль торгового каталога (именно модуль), если из стандартных полей используется минимум, и сущность не обрабатывается, а только привязывается куда-либо, то проще использовать HighLoadBlock т.к. они достаются из базы одним запросом.
    в ручную делать костыли?

    когда делаешь костыли, в итоге сайт обрабатывает стандартный функционал(включая не нужный в данном решение) и сверху еще твои костыли, что приводит к большой нагрузке а иногда и вообще к решению "битрикс-г****", чтобы такого не было, достаточно написать свои компоненты, которые узко-направленно настраиваются и обрабатывают только необходимую информацию используя API битрикса.

    Ответ на вопрос "Как лучше спроектировать структуру сайта":
    для начала необходимо расписать в тз весь функционал сайта, расписать связи, а затем уже обдумать куда лучше закидывать то или иное поле. 3000 свойств, это свалка, в любом случае есть необходимость раскидать, даже просто для наведения порядка и удобства в редактирование.
    Если трафик магазина более 1000 в сутки, рекомендую писать собственные компоненты, на собственных компонентах можно добиться и поддерживать более высокую скорость работы, чем на стандартных.
    Ответ написан
    Комментировать
  • Как ускорить процесс извлечения из БД?

    hzzzzl
    @hzzzzl
    await Word.find({characters: i});
    то есть там Word.characters это один символ, или массив?

    посмотри на оператор $in монгидб
    https://docs.mongodb.com/manual/reference/operator...

    await Word.find({ 
      characters: { 
        $in: [...searchingBy]   // когда characters есть в массиве searchingBy
      } 
    });
    Ответ написан
    8 комментариев
  • Почему скрипт прокрутки блокирует другие js?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Такое ощущение, что всё портит строчка
    a.innerHTML = '<div style="'+s+'">'+a.innerHTML+'</div>';
    Ответ написан
    5 комментариев
  • Что такое webpack dev server?

    Robur
    @Robur
    Знаю больше чем это необходимо
    А что именно в официальном описании в документации вам непонятно? Или вы его пока не читали, сначала спросить решили?
    Ответ написан
    Комментировать
  • Как из куки сделать массив?

    @kostarev_v
    Программирую для себя
    Сам то понял чё спросил?
    Ответ написан
    Комментировать