• Can't set headers after they are sent?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    думаю проблема тут:
    fs.writeFile(fullPath, base64Image, { encoding: 'base64' }, err => {
                if (err) return res.status(500).send(`Ошибка сохранения файла: ${err}`)
                else return
            });


    так как после этого куска кода не дожидаясь результата выполняется следом идущий код. Таким образом возможна ситуация, при которой send в этом куске кода выполнится уже после send-а в последующем коде

    попробуйте заменить этот код на:
    const promise = new Promise(resolve, reject)=>{
       fs.writeFile(fullPath, base64Image, { encoding: 'base64' }, err => {
          if (!err) return resolve(true);
          
          res.status(500).send(`Ошибка сохранения файла: ${err}`)
          return reject(false);
       });
    });
    const isWrite = await promise;
    if(!isWrite) return;
    Ответ написан
    2 комментария
  • Как скрыть backend endpoint на клиенте?

    @disappearedstar
    Фронтенд-разработчик
    В основном бандле (ну или манифесте) всё равно будут зашиты пути к чанкам, чтобы клиент знал, откуда их ему качать, когда понадобится. "Злоумышленник" точно так же может их найти.

    Проблему надо решать с другой стороны: взаимодействие с непубличными эндпойнтами должно быть закрыто авторизацией или какими-то ключами доступа.
    Ответ написан
    1 комментарий
  • Идентификация пользователя в websocket (vue, express)?

    @kirill-93
    Вебсокеты, как и http - это протокол без состояния. То есть, после перезагрузки страницы, сервер не знает, вы это или нет.
    Поэтому после подключения к вебсокетам, вам нужно отправить на сервер какой-то идентификатор, например свой id.
    На сервере хранить соединения и данные о пользователях. Когда нужно будет отправить сообщение, найдете на сервере нужное соединение и отправите в него данные.

    Вот тут хороший пример простого чата на вебсокетах. Без socketio, но сути это не меняет. Автор сохраняет всех клиентов в массив и работает с этим массивом.
    Ответ написан
    7 комментариев
  • Как вы собираете фронтенд без фреймворков?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Я пишу с использованием includeHTML ("склейка" вёрстки и подгрузка JS/CSS) + ванильный JS.
    PS: Работает с мобильным JS редактором под Android: Spck Editor.
    9kM_ZVqRehyeDPQyOG_Q9fdYLiZqvN1f5Q01N29H
    Ответ написан
    Комментировать
  • Как вы собираете фронтенд без фреймворков?

    anatoly_kulikov
    @anatoly_kulikov
    Помог ответ? Отметь решением!
    Gulp'а в принципе достаточно
    Ответ написан
    Комментировать
  • Какую зарплату просить на собеседовании junior frontend разработчику в Москве?

    sober_cat22
    @sober_cat22
    Back end(Node.JS, Ruby)
    1) 50-60k вполне реально получать со старта в Мск, при условии, что ты уже что-то можешь сделать, это не обязательно должен быть опыт разработки в продакшене. Проси тестовое.
    3) Испытательный срок максимум 3 мес., но может быть и меньше, как себя покажешь
    4) Сильно зависит от конкретной компании. Естественно после успешного прохождения испытательного срока, а потом это может быть полгода-год
    Ответ написан
    Комментировать
  • Как работать с Git через SSH на VPS?

    @Famence Автор вопроса
    Full-stack web-developer / freelancer
    Разобрался. Всё достаточно просто.
    Я включил авторизацию на сервер по паролю, после чего сбросил пару ключей, которую генерировал при создании дроплета с помощью PuTTY по мануалу от digitalocean, после чего сгенерировал новые ключи по другому мануалу от них же, более простым и адекватным способом. Отправил их, как написано в мануале, на сервер, авторизовавшись по паролю. Теперь подключение к серверу и репозиторию через SSH проходит успешно.
    Главное, о чем я ранее не догадался, ключи должны храниться в C:\Users\user\.ssh
    Теперь можно отключить авторизацию по паролю.
    Ответ написан
    Комментировать
  • Хорошее ли решение - для каждой страницы сайта писать JS в замыканиях?

    Stalker_RED
    @Stalker_RED
    У вас ошибочное понимание о том, что такое замыкание.
    Но да, вынести в отдельные области видимости не помешает.
    Ответ написан
    Комментировать
  • Нужна помощь с выбором профессии: UX/UI, Веб-дизайн, 3D?

    @nrgian
    Странный ты. Работать-то тебе.

    Про деньги:

    Вариант "что по быстрому изучить, чтобы больше зарабатывать" не работает.
    Ну или иди в порноактеры. Подкачайся только немного, потюнингуй себя (шугаринг волос на теле и т.п.) - и вперед. Быстрые деньги.

    А во всех более традиционных профессиях - быстро не получится.

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

    Сейчас полным-полно "начинающих" во всех этих сферах.
    Работают "за еду", а то даже и на еду не хватает.

    Платят хорошо только профи.

    Чтобы стать профи - нужно и время и усилия.

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

    получить позицию джуниора, везде требуется опыт 1-3 года

    Ну так то джун и подразумевает, что мало-мальский опыт у тебя есть.
    А вовсе без опыта это называется стажер или trainee.
    Ответ написан
    Комментировать
  • Будет ли хорошей практикой такая структура приложения на Vue?

    @d1mmmk
    Совершенно правильная идея. Дело даже не в том что можно абстрагироваться от шаблона представления, а в том что это даст возможность переиспользовать контролеры/сервисы в рамках приложения, избавиться от необходимости использования сторонних библиотек хранения состояния, сделать кешированние данных через static методы и централизованно обрабатывать запросы к API.
    Ответ написан
    Комментировать
  • Как спроектировать крупное приложение на vue?

    @ofigenn
    Я писал и так и эдак. Проблемы всегда есть, разные конечно. ИМХО, с микросервисами чуть проще, т.к. изоляция модулей и их взаимодействие продумывать обязательно надо. А так, крупное, значит по-любому тяжело поддерживать, из-за большого потока требований. Я бы начал с монолита, и если подвернется удобный модуль, вынес бы его в отдельный сервис.
    Ответ написан
    4 комментария
  • Как спроектировать крупное приложение на vue?

    @kttotto
    пофиг на чем писать
    Мы делали крупные проекты с vue, но это не было полноценным spa и не микросервисная архитектура. У нас просто было несколько entry, которые мы использовали для разных разделов.

    Мое мнение, если никто из вас раньше не имел дело с микросервисами, то с ходу не беритесь. Угрохаете кучу времени просто на один каркас и не факт, что все будет работать хорошо с точки зрения надежности и безопасности.

    Я бы начал с монолита, но с расчетом на то, чтобы потом его с минимальными затратами можно было разбить на части. Во первых быстрее получите первую версию, во вторых со временем виднее будут видны границы модулей, легче будет понять, что именно можно или нужно выделить в микросервис, вы воочию увидите что и с чем общается. Чтобы при первом проектировании правильно эти границы определить, нужно иметь какой то опыт с микросервисами. Я так понял, что у вас его нет или он минимальный.

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

    Безболезненно переписать модуль на vue проблем нет при любых раскладах. Только если не решите на ангуляр перейти, тут я сомневаюсь, что его можно точечно использовать в проекте. У нас как то был большой легаси проект, монолит, который был на jq, мы сначала решили добавить knockout, нам не понравилось, дальше продолжали на vue.
    Ответ написан
    1 комментарий
  • Для чего нужны побитовые операции?

    bogolt
    @bogolt
    Они нужны для:
    • Реализации криптографических алгоритмов
    • Реализации любых других алгоритмов требующих работу с битами
    • Чтобы пользователи языка не изобретали велосипеды


    Понимаете, это ведь не особенность языка - это скорее особенность наших процессоров,принципов вычислений, ассемблера. Раз уж эти операции существуют, причем именно в том виде в каком к ним привыкли то логично предположить что многие программы и алгоритмы рассчитывают на их наличие в инструментарии разработчика. Представьте что вам пришлось бы портировать некий криптографический алгоритм использующий эти операторы на js в котором их не было бы. Допустим вы реализуете его умножая/деля на два, но затем обнаруживаете, что при умножении старший бит у вас исчезает, а должен становится самый младшим. Кроме того ваша реализация на js была бы много медленней чем встроенная в язык реализация.
    Ответ написан
    Комментировать
  • Как лучше организовать код стилей во vue, если они переиспользуются, но при этом их нужно немного кастомизировать в каждом компоненте?

    delphinpro
    @delphinpro
    frontend developer
    Глобальное подключение переменных и миксинов можно настроить в конфиге

    css: {
        loaderOptions: {
            sass: {
                data: `@import "@/styles/config/env-production.scss";`,
            },
        },
    },
    Ответ написан
    2 комментария
  • Как найти положение точки на графике?

    @timokins
    все тоже самое, только вычитай минимальное значение,

    0px = 150
    300px = 50

    отрезок в 1px = x = 300px/(150-50)

    точка 75 равна:
    300px - ((75 - 50) * х) = 225px

    точка 50 равна:
    300px - ((50 - 50) * х) = 300px

    точка 150 равна:
    300px - ((150 - 50) * х) = 0px
    Ответ написан
    1 комментарий
  • Как развернуть MEVN-приложение на heroku?

    @EchoStan
    heroku запускает то, что ты записываешь в команды "postinstall" и "start" в твоём package.json в корне проекта. "postinstall" пока не используй, но потом можешь положить в него команду "собрать продакшн-билд vue".

    express "устанавливается" не в файле index.js, а в том же package.json.
    Если я правильно понял, ты хочешь запустить две ноды в одном хероку-приложении? разгугли их прайс сначала в таком случае =))

    Если что - пиши в тг @golden_dinar
    Ответ написан
    Комментировать
  • Как отсечь ненужные символы из строки?

    @DanKud
    let numberArray = ['массив_с_номерами'];
    let correctNumber = переменная_с_вводимым_номером.replace(/\D/g, '');
    let filterArray = numberArray.filter(function(number) {
        return number === correctNumber;
    });
    console.log(filterArray);
    Ответ написан
    2 комментария