Задать вопрос
  • Что имеют ввиду под знанием http?

    rework
    @rework
    Помог ответ? В благодарность отметь его решением
    • типы запросов (POST, GET, PUT, UPDATE, DELETE, OPTIONS и т.д.),
    • заголовки запроса, ответа
    • коды состояний
    • редиректы (location)
    • кэширование
    • и т.п.
    Ответ написан
    5 комментариев
  • Оптимизация сервера?

    AlexMaxTM
    @AlexMaxTM
    Делайте лучше два сокета - это решение может стать заделом на тот случай, если придется разнести саму игру и чат по разным серверам.
    Ответ написан
    Комментировать
  • Где взять практику программисту?

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

    Практику можно только напрактиковать! :)
    Тренировка во сне - пока что возможна только в кинематографе.
    Ответ написан
    2 комментария
  • Зачем нужен Object.create?

    rockon404
    @rockon404
    Frontend Developer
    JS мультипарадигмальный язык. Object.create это, более характерная прототипному программированию, альтернатива оператора new:
    const human = {
      planet: 'Earth',
    }
    
    const tom = Object.create(human);
    tom.name = 'Tom';
    tom.age = 32;
    tom.country = 'UK';
    
    console.log(tom.planet);
    
    // => Earth


    Ключ planet при этом не создается в новом объекте, а берется при вызове tom.planet из прототипа human, пока не будет переназначен в tom.
    5a291ca5a1b64550694668.png
    И если мы изменим прототип human после создания tom, то:
    const human = {
      planet: 'Earth',
    }
    
    const tom = Object.create(human);
    tom.name = 'Tom';
    tom.age = 32;
    tom.country = 'UK';
    
    human.planet = 'Mars';
    
    console.log(tom.planet);
    
    // => Mars


    но если мы переназначим tom.palnet, то:
    const human = {
      planet: 'Earth',
    }
    
    const tom = Object.create(human);
    tom.name = 'Tom';
    tom.age = 32;
    tom.country = 'UK';
    
    tom.planet = 'Jupiter';
    human.planet = 'Mars';
    
    console.log(tom.planet);
    
    // => Jupiter
    
    console.log(human.planet);
    
    // => Mars


    $.extend в свою очередь при вызове:
    const human = {
      planet: 'Earth',
    }
    
    const tom = $.extend({}, human);
    tom.name = 'Tom';
    tom.age = 32;
    tom.country = 'UK';

    создаст новый объект tom включающий в себя ключи human без прототипирования.
    5a291cb3705c0343579580.png
    Надеюсь разница понятна.
    Ответ написан
    Комментировать
  • Почему state в vuex для отображения токена в localstorage не реактивен?

    Так сам local storage то не реактивен, вы все равно что булево значение присвоили изначальному state хранилища.

    Храните непосредственно в хранилище токен, записывая его туда из local storage при инициализации. (уже делаете это)
    И когда пользователь разлогинивается - меняйте state. В action, которым вызываете мутацию хранилища, очищайте local storage.
    При логине - наоборот.

    Короче говоря, local storage нужен лишь для того, чтобы хранить токен между визитами пользователя.
    Ответ написан
    Комментировать
  • Оправдано ли будет использование NodeJS в качестве бэкенда крупного приложения?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Paypal и Netflix используют Node.js. У обоих нагрузки очень даже приличные.
    В плане масштабируемости думайте об архитектуре. Можно и на perl написать приложение, которое за секунду будет обслуживать миллион клиентов.
    Node.js будет прекрасно работать в качестве движка для типичного веб-приложения вроде магазина, чата или CRM. Если у вас очень много компонентов, например тысячи, логичнее приложение разбить на модули и сделать вместо одного приложения несколько, которые можно запускать по-отдельности (здесь уместно упоминание микросервисной архитектуры). Разумеется запросы нужно распределять с помощью балансировщика.
    Есть еще такая вот штука https://serverless.com/ - ее можно масштабировать практически до бесконечности. Были бы деньги.
    Node.js будет плохо работать в области процессинга данных, например генерация картинок, потоковая обработка видео, нейронные сети и т.д. Здесь лидеры C, C++, Go, Rust, Java.
    Можно даже создать гибридное приложение - большую часть выполнить на Node.js, а критичную по производительности на другом языке. Например генерация миллиона прайсов в сутки в старый xls или векторный pdf, упаковка в архив и рассылка - не самая лучшая идея для Node..JS. То же C++ здесь будет вне конкуренции.
    Ответ написан
    19 комментариев
  • Как импортировать готовую БД в Robomongo?

    @SilentFl
    Для монги есть тулзы mongorestore и mongoexport. Robomongo - всего лишь гуй для mongo-консоли
    Ответ написан
    Комментировать
  • Есть способ лучше записать функцию удаления объекта из массива по ключу этого объекта?

    0xD34F
    @0xD34F Куратор тега JavaScript
    arr = arr.filter(n => n.id !== ID);

    Или, если не хотите создавать новый массив:

    arr.splice(arr.findIndex(n => n.id === ID), 1);

    Это, конечно, если вы уверены, что элемент с таким id действительно есть. В противном случае перед удалением надо проверить, чем является индекс:

    const index = arr.findIndex(n => n.id === ID);
    if (index !== -1) {
      arr.splice(index, 1);
    }
    Ответ написан
    5 комментариев
  • Как создать онлайн сервис конструктора всплывающих окон?

    bootd
    @bootd
    Гугли и ты откроешь врата знаний!
    Бекенд - делает серверную логику,
    Фронтенд - делает клиентскую логику,
    Верстальщик - верстает сервис, по макету, нарисованному дизайнером
    Дизайнер - рисует дизайн сервиса

    По 1му каждый. Можно убрать верстальщика и оставить только фронтенд разработчика, при условии, что тот умеет верстать(хотя, он должен уметь верстать, но, некоторые уже не любят этим заниматься).

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

    Порядок действий.
    1) Описали всю логику сервиса, ПОЛНОСТЬЮ, до мельчайших деталей, прям каждую писечку!!!! Всё всё всё. После прочитать раза 3 от начала до конца, 100% появятся правки или дополнения. Все функции по монетизации, тарифы, личные кабинеты, конструктор самого окна, функционал вставки этого окна и всё всё всё. Ибо никто не станет вам на добром слове вносить изменения в созданную прогерами архитектуру проекта, потому что вы, не удосужились вписать новое требование в тз. С вам, что логично, потребуют доп плату уже к той, что была оговорена в начале.

    2) Ищите дизайнера. Нашли? Отлично! Тогда:
    1.1) По вашему тз делается прототип, того, что и как будет расположено на сайте, где какие элементы. Это как первые наброски, чертёж, если угодно.
    1.2) На основе этих набросков рисуется макет, утверждается дизайн сервиса.
    1.3) Утвердили все страницы, все элементы, все всё всё. У вас уже есть то, как выглядит ваш сервис.

    3) Берём фронтенд разработчика + бекенд разработчика
    Тут нужно подойти ответственно. Хорошего разработчика порой трудно найти, часто, хорошие стоят дорого, дешёвые сделают тяп ляп и ваш сервис станет очень сложно менять и дополнять в будущем.

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

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

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

    4) Тестирование
    Все всё сделали, ура. Дальше, начинаем тестировать сервис на его функционал. Ошибки и баги будут 100%. Все мы люди, все можем ошибиться, нужно эти ошибки исключить.

    5) Выкатка приложения:
    Т.к. сайт делался на дев(там, где разрабатывают) версии, осталось выложить сайт на основной домен(Который вы должны ещё приобрести). Выложили, всё настроили, ура. Приложение готово. Далее, реклама, маркетинг, сео и прочая чушь.

    P.S. Так как всё это пахнет фрилансом, то будьте готовы, что вас могут кинуть, игнорить, пропадать не известно куда. Не забудьте составить договора с прогерами, где будут описаны все нюансы. А так же, что бы под конец все права принадлежали вам и только, получение всех доступов, данных и т.п. Иначе потом, можете всё похерить и никто вам уже не поможет.

    Примерно так))
    Ответ написан
    Комментировать
  • Как передать значение input value в объект Vue?

    0xD34F
    @0xD34F Куратор тега Vue.js
    v-model

    При необходимости обновить значение путём записи свойства value у поля ввода, после собственно установки значения, надо будет отправить ему событие input, которое слушает v-model:

    input.value = какое-то значение;
    input.dispatchEvent(new Event('input'));
    Ответ написан
    4 комментария
  • Зачем делают вот такую конструкцию?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Очень-крутые сайтоделы внизу своей чисто-HTML страницы добавляют «копирайт (с) Вася Пупкин 2000 год» – иначе они не круты.

    Потом приходится менять год на следующий. И на следующий. Становится лень, и тут они открывают чудный мир PHP и копируют откуда-то код, автоматически подставляющий текущий год в страницу!

    &copy; Вася Пупкин <?php echo date('Y'); ?>

    Вот отсюда всё и начинается..
    Ответ написан
    Комментировать
  • Как успокоить атакующую армию ботов, кликающую на рекламу на моем сайте?

    LifeAct
    @LifeAct
    Создаем и раскручиваем, не ставим на конвейер
    Я бы сразу писал в гугл с предоставлением логов/скринов.

    Написал скрипт js для вебмайнера, чтобы всех с рефером seosprint.net грузило на все ядра на максимум. Пусть заходят менее палевно

    Прикольно, а поделитесь?
    Ответ написан
    2 комментария
  • Как обновлять данные во вложенных компонентах?

    lavezzi1
    @lavezzi1
    У вас вроде все ок с иерархией компонентов, просто используйте vuex для централизованного хранения данных и тяните их где угодно. При изменении их в vuex store эффект будет везде и на странице и в компонентах.
    Ответ написан
    1 комментарий
  • Как обеспечить соблюдение закона о персональных данных для сайта с обратной связью?

    Xapu3ma-NN
    @Xapu3ma-NN
    Достаточно ли в форме обратной связи сделать предупреждение на согласие с публичной офертой и ссылку на эту оферту, в которой просто прописать, что данные пользователя нужны лишь для связи с ним?

    Чекбокс который нажмет пользователь будет являться выражением его согласия на обработку, если будет явно написано "ставя галку или чб, тем самым вы соглашаетесь и бла бла".

    Можно ли эту оферту написать самому произвольным образом или надо по какой-то установленной форме и заверять ли нотариально?

    Точно не скажу, попробуйте посмотреть 152 ФЗ и 21 приказ ФСТЭк.
    Ответ написан
  • Как получить аргументы из конструктора в классе?

    youngmysteriouslight
    @youngmysteriouslight
    ТК, ТТ, JS, FP, WM
    А что Вы хотите? Вы вызываете new Clock с одним аргументом, а в теле используете два. Поэтому options принимает значение переданного объекта с полями template и name, а sub -- undefined.

    Скажите, чему, по Вашему желанию, должны равняться options и sub в этом примере.
    Ответ написан
    3 комментария
  • Почему теряется контекст при вызове объекта во Vue.js?

    miraage
    @miraage
    Старый прогер
    Попробуйте написать обычную функцию, а не стрелочную.
    И вдобавок почитайте, в каких случаях следует применять стрелочные функции.
    Ответ написан
    Комментировать
  • Формула для расчета везения?

    Казино – одно и то же?

    Тогда для сравнения «везучести» достаточно посмотреть на чистый выигрыш каждого на данный момент.

    И да, если всего три игры и три выигрыша – надо забирать куш и уходить )
    Ответ написан
    Комментировать
  • Какой стиль написания кода в моде в JavaScript?

    TexxTyRe
    @TexxTyRe
    Software Developer
    Не слушайте тех, кто говорит про говнокод, ребята либо нигилисты, либо мамкины революционеры и "не такие как фсе". Как удобно, так и пишите. Просто прочитайте главу про прототипы, поймите это и то, что JS основан на прототипах и вперед. Все нормальные компании используют новые приемы и не стоят на месте.
    class Rectangle {
      constructor(height, width) {
        this.height = height;
        this.width = width;
      }
      
      get area() {
        return this.calcArea();
      }
    
      calcArea() {
        return this.height * this.width;
      }
    }

    Классы ES6
    Ответ написан
    5 комментариев
  • Проблемы с доступом к Vuex через commit?

    nikichv
    @nikichv
    Frontend dev. Current stack: Next.js/RTK/Saga
    methods: {
      logout() {
        localStorage.removeItem('token');
        this.$store.commit('changeUserData', {});
        this.$store.commit('changeAuth', false);
      }
    }

    Если не заметили, что изменилось, то мы убрали стрелочную функцию и заменили ее на метод (короткий синтаксис es6). И собственно, после этой замены контекст this не будет теряться.
    Было:
    logout: () => {
    Стало:
    logout() {

    Из документации:
    Стрелочные функции не создают собственный контекст this, а используют значение this окружающего контекста.
    Ответ написан
    4 комментария