• Как передать родительскому компоненту данные из?

    AntiStream
    @AntiStream
    Потоковый программист
    Чтобы передать данные родительскому компоненту из дочернего, надо использовать event emit из ребёнка и ловить его в родителе: https://codesandbox.io/s/send-data-to-parent-from-...
    Ответ написан
    3 комментария
  • Почему валидация не работает как нужно Vuetify?

    AntiStream
    @AntiStream
    Потоковый программист
    value это число, а у числа нет длины, надо в начале конвертировать value в строку, чтобы сделать проверку на длину:
    https://codepen.io/artyomsilantiev/pen/jOZGOEL
    Ответ написан
    Комментировать
  • Как передать данные из одного компонента в другой?

    AntiStream
    @AntiStream
    Потоковый программист
    Для этого надо использовать хранилища данных (data store).
    Например vuex, но лучше pinia (https://pinia.vuejs.org/)

    Так же можно написать кастомное хранилища, например через возможности vue3:
    https://codesandbox.io/s/angry-scott-o27oz9
    Хотя если в проекте будет использоваться рендер, то лучше всё же использовать vuex или pinia.

    Идея в том, что данные меняются не в компоненте, а в отдельной сущности для хранения данных, и далее они могут использоваться в нескольких других компонентах.
    Ответ написан
    Комментировать
  • Как на nodejs правильно подтверждать платежи?

    AntiStream
    @AntiStream
    Потоковый программист
    Прям ответа дать не могу, но могу поделиться некоторыми соображениями:
    1. Уйти от использования Passport.js, написать своё решение, так как использование стандартных модулей для авторизации уже само по себе не безопасно.
    2. Вы же логируете все действия пользователей, которые связаны с финансами?
    3. Данные от пользователя валидируются на стороне бакенда, при создании пополнения?
    4. Задайте себе вопрос, вы уверены в своей платёжной системе?
    5. Возможно у кого то есть доступ к БД
    Ответ написан
  • Как передавать токен авторизации в микросервисах при отсылке сообщения?

    AntiStream
    @AntiStream
    Потоковый программист
    Передавать заголовок "Authorizaion: Bearer *JWT-Token" в каждом api запросе, это уже и есть одна из устоявшихся практик.

    JWT, это зашифрованный сообщение (JSON), в котором содержится userId, благодаря которому бакенд связывает запрос с каким то юзером.

    Раньше могли передавать просто какой-то токен, типа sessionid, который указывал на какую то запись в БД для бакенда, где и хранилась информация о юзер айди, но сейчас в основном JWT используют, при этом JWT так же храниться и в БД обычно.
    Ответ написан
  • Есть ли смысл всегда(почти) использовать short вместо int?

    AntiStream
    @AntiStream
    Потоковый программист
    Если стоит задача сделать очень оптимизированную программу, либо программу, где используются десятки, а то и сотни миллионов цело числительных переменных не превышающих 1-2 байта, то возможно и есть в этом смысл, в ином случаи не знаю... так как ещё 20 лет назад, когда на компьютерах было около 256мб памяти, рекомендовалось везде использовать int, как стандарт.
    Ответ написан
  • Корректно ли работает SSR в этом примере?

    AntiStream
    @AntiStream
    Потоковый программист
    Судя по тому, что возвращает curl, данные для бота будут так-же каждый раз разные...
    5f15c453e3686952298699.png

    Кстати использовать SSR не обязательно, можно просто собрать SPA приложение и отдавать его через nginx, а для ботов сделать отдельное пререндер приложение на основе модуля prerender (https://www.npmjs.com/package/prerender), для которого надо в nginx прописать, чтобы боты отправлялись на пререндер приложение. Ниже описаны правила nginx, для пререндер приложения, которое работает на 3000 порту:
    upstream prerender_server {
        server 127.0.0.1:3000;
        keepalive 8;
    }
    
    server {
    
        location / {        
            set $prerender 0;
    
            if ($http_user_agent ~* "googlebot|bingbot|yandex|baiduspider|twitterbot|facebookexternalhit|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest\/0\.|pinterestbot|slackbot|vkShare|W3C_Validator|whatsapp") {
                set $prerender 1;
            }
            if ($args ~ "_escaped_fragment_") {
                set $prerender 1;
            }
            if ($http_user_agent ~ "Prerender") {
                set $prerender 0;
            }
            if ($uri ~* "\.(js|css|xml|less|png|jpg|jpeg|gif|pdf|doc|txt|ico|rss|zip|mp3|rar|exe|wmv|doc|avi|ppt|mpg|mpeg|tif|wav|mov|psd|ai|xls|mp4|m4a|swf|dat|dmg|iso|flv|m4v|torrent|ttf|woff|svg|eot)") {
                set $prerender 0;
            }
     
            if ($prerender = 1) {
                rewrite .* /render?url=$scheme://$host$request_uri break;
                proxy_pass http://prerender_server;
            }
        }
    
    }


    Тогда можно будет зайти на сайт с параметром "?_escaped_fragment_", и увидеть то, что уведет бот.
    Ответ написан
    Комментировать
  • Как переписать POST запрос PHP на Node js?

    AntiStream
    @AntiStream
    Потоковый программист
    getPostResponse ничего не возвращает в данном случаи, тут надо использовать промис для такого, а саму функцию вызывать c помощью async/await...

    (async () => {
        console.log(await getPostResponse());
    })();
    
    function getPostResponse() {
        return new Promise((resolve, reject) => {
        request.post({
            url: 'https://rustxt.ru/api/index.php',
            form: {
                method: 'getSynText',
                text: 'Синонимизация текста совершенно бесплатно'
            }
        }, (err, response, body) => {
            if (err) {
                return reject(err);
            }
    
            resolve(body);
        });
        });
    }
    Ответ написан
    Комментировать
  • Как выбрать замену текущей cms и нужна ли засмена?

    AntiStream
    @AntiStream
    Потоковый программист
    CMS в моём понимании, это какой-то сайт плюс удобная админа к нему... Если необходимо много не стандартного функционала, то это надо смотреть в сторону открытых решений. Например Laravel или nodejs в качестве серверного приложения, плюс клиентское веб приложение на vue, react или angular. При подобной архитектуре нету ограничений стандартности, которые обычно есть в "крутых" CMS, всё можно сделать, если есть специалисты.
    Ответ написан
  • Как сохранить позиции постов при их перемещении, когда обновляется страница?

    AntiStream
    @AntiStream
    Потоковый программист
    Ну значит надо сортировать посты при каждом их получении из бд, то есть, в fetchPosts должна быть логика сортировки на основе данных из localstorage. Ну и обновлять порядок в localstorage, при каждом перетаскивание постов.
    Ответ написан
    Комментировать
  • Как узнать истинный цвет фона элемента? С учётом всех родителей, у которых могут быть полу прозрачные цвета фона?

    AntiStream
    @AntiStream Автор вопроса
    Потоковый программист
    Нашёл решение: https://jsfiddle.net/5ptdk7sv/

    Всем спасибо, ответы помогли мне направить поиски в правильном направлении :)
    Ответ написан
    Комментировать
  • Почему стремление к упорядочиванию приводит к большей энтропии и отнимает силы?

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

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

    AntiStream
    @AntiStream
    Потоковый программист
    То есть это как, желание что то делать есть, а идей что можно сделать нет, так что ли? Нее, так не пойдёт, всё в этом мире делается если поставить цель и стремится выполнить её, если вы сами не решите, что вам нужно делать, то за вас это если и будут решать, то только если в этом будет кому то выгода. Если сами для себя не можете решить, что вам нужно делать, то почему это должны решать за вас другие? Ведь эти же решения должен кто то принять, если их не кто не будет принимать, то от куда же они будут браться в мире. Цель должна быть своя, если брать цель из другого источника, то это получается будет чужая цель, зачем работать на чужие цели, если можно работать на свои. Вариантов что можно сделать масса, сайт, блог, лендинг, игра, магазин и все возможные вариации этого и всего иного прочего, а способы и масштабы реализации ограничены только вашей фантазией и желанием это делать, но главное это поставить цель! То финальное состояние, к которому нужно стремится в реализации чего бы то не было.
    Ответ написан
    Комментировать
  • Почему перезаписывается объект?

    AntiStream
    @AntiStream
    Потоковый программист
    Насколько понимаю тут надо создать клон объекта, чтобы не изменить оригинал, видимо как то так:
    var clean = extend(true, extend(true, {}, schema), used);


    Ещё можно использовать Object.assign вместо npm extend:
    console.log( Object.assign({}, schema, used) )
    Ответ написан
    4 комментария
  • MongoDB: как сменить тип поля с NumberLong на String?

    AntiStream
    @AntiStream
    Потоковый программист
    db.longs.find().forEach( function (x) {
      var oldId = x._id;
      var updateFlag = false;
      if (typeof x._id == "number") {
        updateFlag = true;
        x._id = x._id+"";
      } else if(x._id instanceof NumberLong) {
        updateFlag = true;
        x._id = x._id.toNumber().toString();
      }
      if (updateFlag) {
        db.longs.save(x);
        db.longs.remove({"_id":oldId});
      }
    });
    Ответ написан
    1 комментарий
  • Кто как реализует автозапуск приложений node.js?

    AntiStream
    @AntiStream
    Потоковый программист
    Через systemd очень легко это делается.
    В начале создаём файл сервиса нашего node приложения по следующему типу:

    # nodeapp.service
    [Service]
    Restart=always
    StandardOutput=syslog
    StandardError=syslog
    SyslogIdentifier=nodeapp
    User=nodeuser
    Environment=NODE_ENV=production PORT=3000
    WorkingDirectory=/path/to/nodeappdir
    ExecStart=/usr/bin/node app.js
    
    [Install]
    WantedBy=multi-user.target


    После чего делаем следующие действия в консоли:

    sudo cp nodeapp.service /etc/systemd/system/nodeapp.service # копируем его куда надо
    sudo nano /etc/systemd/system/nodeapp.service # смотрим, [редактируем,] [сохраняем,] закрываем
    sudo systemctl daemon-reload # перезагружаем список "демонов"
    sudo systemctl start nodeapp # запустить сервис
    sudo systemctl enable nodeapp # делаем авто запускаемым при старте системы
    
    # другие действия:
    sudo systemctl disable nodeapp # отключаем авто запуск
    sudo systemctl stop nodeapp # остановить сервис
    sudo systemctl restart nodeapp # перезагрузка
    systemctl status nodeapp # посмотреть статус
    journalctl -u nodeapp.service # глянуть логи


    Всё -- так это делается на линукс системах, а как на винде не знаю, там свои заморочки =))
    Ну и надо чтобы systemd был установлен в системе, на убунте он вроде доступен(есть) с версии 14.10
    Ответ написан
    3 комментария
  • Почему числа в JS такие странные?

    AntiStream
    @AntiStream
    Потоковый программист
    Это информатику надо учить, чтобы понять. Числа с запятой хранится в типах данных в 32 и 64 бита (float и double), и у этих типов данные есть соответственно 2^32 и 2^64 возможных состояний. В целых числах у каждого значения есть чёткое состояние. В плавающих числах эти состояния те же самые, что и в целых, но просто они как бы растянуты по алгебраическому представлению, из-за чего и страдает точность. Для примера, если в консоли сделать 1e128+1, то получите всё тоже 1e128 потому, как нету в типе данных такого состояния, которое могло хотя бы округлённо представлять 1e128+1. Даже более того -- если сделать 1e128+1e111, то этого тоже будет не достаточно для изменения состояния 1e128, но при уже 1e128+1e112 получится изменённое состояние : 1.0000000000000003e+128 Компьютер считает не арифметическими числами, а матричными состояниями битов информации.
    Ответ написан
    1 комментарий
  • 2D игра [online]. Как всё организовать?

    AntiStream
    @AntiStream
    Потоковый программист
    Если хотите сделать онлайн игру, то начните с чего нибудь простого. Ну например сделать ""простенькую" мморпг": Cервер на ноде, клиент на хтмле+канвасе, и данные передаются через вебсокеты. Надо будет сделать систему загрузки игровых областей, которая загружает те области, в которых ведётся активность игроков. Реализовать различные игровые системы в зависимости от гейм дизайна: охоту, торговлю, собирательство, крафт, квесты, прокачку, группы, рейды, кланы и тд и тп. Наладить синхронизацию и передачу всех игровых данных между игроками на одной загруженной области. В целом это всё довольно трудоёмкая задача, которую сделать не так то и легко. Даже если сервер и клиент будут сделаны то это будет только голый не играбельный скелет, а по настоящему игра становится игрой только благодаря игровому контенту. Наполнить же игру контентом и сделать это так, чтобы возникла некая гармония и игра была действительно качественной... ну это уже совсем другой разговор и совсем другие вопросы, а точней полное их отсутствие если реально ставится цель сделать онлайн игру с онлайном в несколько тысяч.
    Ответ написан
    Комментировать
  • Общеразвивающий скриптовый ООП язык - что взять для саморазвития?

    AntiStream
    @AntiStream
    Потоковый программист
    Тут надо прежде всего понять, что ЭВМ всё оперирует матрицами возможных состояний. Например бит - это матрица из двух возможных состояний, байт это уже 256 состояний, int и float это 2^32 возможных состояний . Все типы данных - будь то числа либо строки либо объекты, это матрицы из битов информации. А программист, это тот кто определяет структуру этих матриц, и создаёт под них логики работы ЭВМ - где это будет использоваться для выполнения поставленной задачи. И тут по сути не особо важно какой язык и стиль программирования выбрать - всё это будут разные способы создания управляющего сценария для работы ЭВМ. А если выбирать, то лучше выбирать из расчёта того, что больше нравиться и на что больше спрос - сейчас это вроде JS.
    Ответ написан