• Как расчитать время на реализацию task-а?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Но с результатами данной формулы не согласно мое начальство и клиенты. Мол, это много.

    А как с результатами данной формулы согласуется реальность? Если подходит, то "это много" - чисто дипломатическая задача.
    Если ситуация такая что вы говорите "4 часа" и всем "это много", а когда говорите "1 час", и потом все равно делаете 4 часа - это ок, то реально оценка 4 часа.
    А если от вас в принципе ждут более быстрой работы чем вы выдаете, и из-за этого напряги, то тут два варианта:
    - либо вы действительно медленно все делаете
    - либо у менеджмента завышенные и неадекватные ожидания.

    нужно определить какой вариант - ваш и действовать в соответствии.

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

    еще вот такой метод очень популярен:
    Собрал с разработчиков оценку, посчитал. Надо заложить риски.
    - умножить на два?
    - Нет, на два это не научно. Надо умножать на число e или на число пи, в зависимости от сложности проекта.
    - А это как определяется? "E..., какой сложный" и "Пи... какой сложный"?
    Ответ написан
    Комментировать
  • Как добавить новый пункт в JSON на node js?

    Robur
    @Robur
    Знаю больше чем это необходимо
    прочитайте всех пользователей из файла в массив, добавьте им всем новый пункт ("user.newProp = 2") в цикле, потом сохраните обратно.
    Ответ написан
    6 комментариев
  • Как использовать общий файл JS на разных страницах сайта?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Ну так если вы подключаете один и тот же код на разные страницы, код надо переписать так чтобы он мог работать на любой из них.

    в самом простом варианте - наставьте условий проверки, есть ли нужный элемент на странице.
    Если есть - запускаем код, если нет, то не запускаем.
    Ответ написан
    Комментировать
  • Что за полосы на экране?

    Robur
    @Robur
    Знаю больше чем это необходимо
    верстка.
    Ответ написан
    Комментировать
  • Как строить веб-приложение?

    Robur
    @Robur
    Знаю больше чем это необходимо
    если вам 17, у вас нет доли в этом стартапе и глава стартапа произносит фразы "без фреймворков - это хорошо" "быстро и удобно нам не нужно" и "не люблю js, будем писать самописный фронт на селекторах и handlebars", то ваши действия однозначны:
    - соглашаетесь на то что он там хочет
    - планируете как вы можете извлечь максимальный опыт из этой работы в минимальные сроки
    - реализуете предыдущий пункт думая исключительно о себе
    - параллельно начинаете искать другие варианты
    - как только находится другой вариант где люди думают о том как сделать лучший продукт а не о том что им нравится/не нравится - вежливо прощаетесь.
    Ответ написан
    2 комментария
  • Проблема с базой данных?

    Robur
    @Robur
    Знаю больше чем это необходимо
    То на 2-м обновлении

    А вы перед эти 2-м обновлением установили снова новое соединение в базу?
    Ну и остается вопрос зачем вам вообще соединение закрывать после запроса. запустилось приложение, открыли, завершаете приложение - закрыли, вышли.
    Ответ написан
    2 комментария
  • Опишите подробно деятельность фронтенд-разработчика в аутсорсинговой компании?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Если максимально подробно:

    пункты 1-14:
    Да что угодно может быть, придумаете любую фантазию, и где-то именно так и есть. В каждой конторе будет все совершенно по разному

    пункт 15:
    да, но это зависит от вашего героя, тут уж сами думайте. Единственный очень важный нюанс общий для всех фронтенд-разработчиков - они работают на клавиатуре.
    Ответ написан
    Комментировать
  • Можно ли учить TypeScript, не зная JavaScript(для бекенда)?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Можно, вам же никто не запретит.
    Но или из вас получится что-то на уровне jquery - программиста, или, если вы серьезно будете изучать TS, то по ходу все равно будете так же изучать и JS, хотите вы этого или нет.
    С другой стороны - изучать все-все странности и выкидоны JS типа приведения типов не обязательно, TS для того и сделан чтобы они в вашем коде не появлялись большую часть времени.
    Ответ написан
    Комментировать
  • Как реализовать создание пользователей с не базовой ролью в приложении с RBAC?

    Robur
    @Robur
    Знаю больше чем это необходимо
    пользователи с не базовой ролью очевидно не могут сами себя зарегистрировать, и создавать их должны другие пользователи у кого есть такое право.

    вызов auth/register доступен всем, создается прользователь с обычной ролью, на вызов auth/register-admin уже стоят права доступа и этот эндпоинт могут вызывать только те кто имеет право (и это правильнее назвать не register-*, а create-*), он создает пользователя с соответстующей ролью вместо базовой.

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

    Robur
    @Robur
    Знаю больше чем это необходимо
    Что значит "не работает"?
    У вас есть список функционала который должен быть в альфа-версии, а вы его не сделали или он глючит/падает? Тогда это просто плохо сделанная работа.
    Если все что должно быть для альфа версии - сделано и работает, то все работает.

    А вот как планировать релизы, разработку продукта, когда и что выкатывать - это решают продакты. Если у вас вопросы и вы считаете что они как-то плохо все сделали, то в первую очередь эти вопрос стоит задать им. Выяснить почему так и в чем цель/задача альфа версии.
    Вы спросили, зачем эта альфа? какие цели преследует этот релиз, какие задачи хотят им закрыть?

    Альфа/бета и прочии версии тестирования продуктов придумали не для того чтобы "х-к х-к и в продакшен", а для решения весьма конкретных и серьезных задач.

    Может у вас и правда продакты бестолковые, которые просто напрягают девелоперов чтобы они "хоть что-то делали", потом затыкают дыры, не хотят подумать, и вообще творят безобразия и только вы можете спасти продукт с помощью армии тостера, а может быть и наоборот - это вы чего то не понимаете или не знаете.
    Вы точно и достоверно проверили оба варианта?

    Разве это не сэкономит больше ресурсов, чем потратит?

    Нет. Это потратит в 100 раз больше ресурсов. Просто потому что у вас нет необходимой информации чтобы все продумать и сделать "идеально". Поэтому часть вы просто придумаете, сознательно или нет. и чем заранее и полноценнее вы попытаетесь "продумать наперед все моменты", тем больше у вас будет фантазий. А потом, когда система будет запущена в реальном мире, выяснится что на самом все не так как вы думали, плюс половина того что вы действительно угадали за это время уже поменялась и тысячи человекочасов будут спущены в унитаз.

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

    Избавитесь от перфекционизма, сможете делать по настоящему хорошие и качественные штуки, как бы странно это ни звучало.
    Ответ написан
    4 комментария
  • Стоит ли переходить на Хуки?

    Robur
    @Robur
    Знаю больше чем это необходимо
    5 комментариев
  • Что здесь является this?

    Robur
    @Robur
    Знаю больше чем это необходимо
    this будет равен тому что был установлен для функции в которой эта строка вызывается.

    все. помимо этого не надо усложнять. Ничего никуда не опускается, ничего никуда не подставляется.

    в строке this.renderSquare(0) эта функция render() для функции render в this будет экземпляр Board.
    дальше уже вызывается renderSquare() в которой this - тот же самый экземпляр Board (все как и для render по сути)

    в строке value={this.state.squares[i]} никакой this никуда не передается, из массива squares берется нужное значение и передается 'X' или 'O' без всяких board

    в строке onClick={() => this.handleClick(i)}
    используется стрелочная функция, для того чтобы вне зависимости от того как она будет вызвана в будущем, значение this осталось неизменным, таким каким оно было когда эта функция создавалась (this из renderSquare)

    почитайте как они работают.
    Ответ написан
  • Фриланс или стажировка (курсы)?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Могу посоветовать начать принимать решения от которых зависит ваша жизнь самостоятельно. Это навык который в жизни пригодится в сто раз больше чем php/верстка.

    А помимо этого - советов всего два:
    - идите на фриланс.
    - идите в академию.

    Выбирайте какой больше нравится.
    Ответ написан
    3 комментария
  • Как понять работу данной функции js? в нее передается несколько параметров или как?

    Robur
    @Robur
    Знаю больше чем это необходимо
    понять можно вот так:

    const func = (e) => {   //....  };
    removeItem = (id) => func
    
    const f1 = removeItem(1)
    const f2 = removeItem(2)
    
    f1(e)
    f2(e)

    removeItem получает id и возвращает func.
    func можно, например вызывать, передав ей e.
    и там внутри скорее всего замыкание (которого в моем примере нет) чтобы func могла получить доступ к id. f1 будет "помнить" что id=1, f2 будет "помнить" что id=2
    Ответ написан
    2 комментария
  • Не пойму ошибку в async await?

    Robur
    @Robur
    Знаю больше чем это необходимо
    раз он не на промисах, то return await connection.query
    сработает сразу после вызова query. await ждет промиса а его там нет. Почитайте подробнее как async/await работает.

    вам нужно конвертировать это в промисы, либо через utils.promisify,
    либо
    const getDataDB = q=>{
      return new Promise(( resolve, reject) => connection.query(q, (err,result)=>{
        if(err) reject(err);
        console.log(1);
    
        resolve(result);
      }));
    };
    Ответ написан
    1 комментарий
  • Как импортировать скрипт js так, чтобы он выполнился?

    Robur
    @Robur
    Знаю больше чем это необходимо
    можете использовать https://webpack.js.org/plugins/copy-webpack-plugin/ чтобы копировать jquery куда вам надо
    или вот это прочитайте там несколько способов в доходчиво progcode.ru/2019/01/12/%D0%B8%D1%81%D0%BF%D0%BE%D0...
    Ответ написан
    Комментировать
  • Как убрать лишние перерендеры?

    Robur
    @Robur
    Знаю больше чем это необходимо
    второй и третий компоненты тоже перерендериваются, вопрос почему?

    потому что так устроена логика работы реакта.
    То что "пропсы не меняются" еще не значит что рендер компонента выдаст то же самое. Может у вас там таймер засунут или еще что.

    Поэтому по дефолту реакт вызывает рендер всех затронутых компонентов, и если вы точно знаете что ничего не поменялось, об этом нужно сообщить, shouldComponentUpdate в pureComponent именно это и делает, но ничто вам не мешает написать свой метод. для функциональных компонент на хуках есть React.memo для той же цели.
    Ответ написан
  • Как организовать разработку на React-Native?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Если прямо вот так сидят и не хотят переходить - то вводить более строгие правила по обновлению/добавлению библиотек и ноды.

    что я бы сделал:
    1. составить список проблем.
    2. понять какие действия приводят к этим проблемам. Например обновление библиотек/добавление новых
    3. написать как можно проверить что эти действия в каждый конкретный момент не сломали все. Например "если вы обновили библиотеку, то надо проверить что все нормально и в винде и на линуксе"
    4. подумать как эти проверки сделать удобно. Может быть прикрутить в CI сборку под обе платформы на каждый коммит где затронули package.json, или обновлять либы только в отдельной ветке и просить проверить на другой платформе, и после этого только мержить.

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

    В идеале конечно если проверка на то что все собирается под обеими платформами будет автоматическая после каждого коммита.
    Ответ написан
    Комментировать
  • Как попасть внутрь iframe?

    Robur
    @Robur
    Знаю больше чем это необходимо
    просто так залезть в iframe - никак по соображениям безопасности.
    Только если adSense поддерживает такое желание и шлет оттуда наружу какие-нибудь сообщения через postMessage.
    Ответ написан
    Комментировать
  • Что учить для верстки простого проекта на React JS?

    Robur
    @Robur
    Знаю больше чем это необходимо
    html+css.
    Что-то устарело, что-то новое, этот список постоянно меняется, так что "учите" то, как это самостоятельно выяснять.
    но. начните с штудирования caniuse.
    ну, верстку на float или таблицами можно уже не изучать.

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