• Как настроит webpack 5 для vue 3?

    @dark_king_13 Автор вопроса
    Нашёл один пример конфига в сети, нужно поставить следующие версии пакетов и всё заработает:
    "@vue/compiler-sfc": "3.0.0",
    "vue-loader": "16.0.0-beta.8",
    "vue": "3.0.0-rc.5"
    Ответ написан
    1 комментарий
  • Когда использовать React.memo?

    Vlad_IT
    @Vlad_IT
    Front-end разработчик
    но почему его почти не используют ?

    А на основе чего такой вывод? Мне показалось наоборот, всякую оптимизацию используют везде, даже там где она делает только хуже.

    (без собственного состояния)

    Внутренний стейт компонента не влияет на результат работы своего memo, memo сравнивает только пропсы.

    По логике вещей каждый компонент (без собственного состояния), даже который не использует props, должен быть обернут в memo, но так не делают, почему?


    Тут есть условности. У меня например вот такие правила:

    Оборачиваем в memo обязательно, если - родительский компонент часто перерендеривается без изменений пропсов вашего компонента. Если ваш компонент не обернуть в memo, то он будет столько же перерендериваться, сколько и родительский. Но тут я бы обернул ваш компонент в родительском в useMemo (если на хуках писать).

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

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

    В остальных случаях можно не использовать memo, если на то не указывают исследования производительности конкретно вашего приложения.

    Еще важно следить за перерендерами, чтобы родитель не передавал пропсы, у которых на каждом рендере разная ссылка, пример:
    <MemoComp onClick={() => console.warn('hello')} />
    в таком случае, memo не будет работать. Это можно еще случайно пропустить, если не используете TypeScript/Flow, то вот такой код
    <MemoComp isActive={item || isEnabled} />
    будет перерендериваться лишний раз, если вдруг окажется, что item это объект с нестабильной ссылкой.

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

    @Nickellick
    Один знакомый по этой теме диплом защитил :)
    Вкратце идея такая - подключить к камере Raspberry Pi с нейронкой (уже обученной, конечно), которая распознаёт людей, их количество и "трекает" их (смотри куда они двигаются и т.д.)
    Ответ написан
    2 комментария
  • Как корректно потянуть время до принятия оффера?

    Zoominger
    @Zoominger
    System Integrator
    Лол. Был в вашей же ситуации. Тянул-тянул, в "другую известную компанию" не взяли, а в "одной известной компании" к тому времени вакансию уже закрыли. Предупредил, да.

    P. S. Правда, я тогда ещё не был таким человеком, которого "известные компании" зовут самого.
    Ответ написан
    6 комментариев
  • Как корректно потянуть время до принятия оффера?

    inoise
    @inoise Куратор тега Карьера в IT
    Solution Architect, AWS Certified, Serverless
    Сказать прямо. Всегда так делаю, все всегда относились с пониманием. Просто просили указать временные рамки
    Ответ написан
    3 комментария
  • Top лучших online IDE для PHP?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    c9.io, правда для разработки (а не ковыряния палочкой) я бы рекомендовал забыть про online ide.
    Посмотрите PhpStorm, лучшей IDE под php пока что не существует.
    Ответ написан
    3 комментария
  • Как удалить http https пользовательского ввода в html?

    @Hanneman
    Есть более элегантное решение в языке PHP. Это функция 'parse_url'. Ваш пользовательский ввод передаёте ей в качестве аргумента и на выходе получаете составные части от URL (простыми словами).

    Пример:
    <?php
    echo parse_url("http://example.com/path?arg=value#anchor", PHP_URL_HOST);
    ?>

    Получаем
    example.com
    Ответ написан
    Комментировать
  • Какое видео посмотреть по вёрстке?

    @bogomazov_vadim
    Посмотри у Юрия Артюха. У него были стримы, как он верстает макеты в риалтайме. Ну и в принципе у него есть что посмотреть.
    Ответ написан
    Комментировать
  • Что делать если увольняют с работы(IT компания. Скорее всего по статье за несоответствие занимаемой должности)?

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

    Словом, уходите по собственному и при поиске работы объясняйте такой короткий срок. В целом, это нормально - на то испытательный срок и существует, чтобы не только компания к вам присмотрелась, но и вы к компании. Единичная подобная история нормального кадровика не смутит.
    Ответ написан
    4 комментария
  • Научите делать эту SVG секцию?

    @Ibishka
    Если не хочешь гемароя то возьми картинку в формате png.Или на ютубе есть видео посмотри как сделать многоугольник. А потом играй с position' онами.
    Ответ написан
  • Как на самом деле работают типы данных в js?

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

    Это вы сейчас в очень глубокую нору заглядываете.

    Движки стараются оптимизировать по максимуму, поэтому там очень много всего накручено помимо наличия int32.
    Я не удивлюсь если в вашем конкретно примере они сделают просто a=1.5 в обоих случаях и код будет идентичный до байта.
    а потом эту a подставят куда надо и оптимизируют там еще что-то, например b=c+a превратится в b=c+1.5

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

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

    И много чего другого, лишь бы быстрее работало.
    Даже если вы прямо сейчас разберетесь во всем, то завтра запилят новую оптимизацию где-то в глубине движка и что-то будет работать уже по другому.
    Ответ написан
    8 комментариев
  • Почему babel использует метод concat() вместо оператора "+"?

    0xD34F
    @0xD34F Куратор тега JavaScript
    ...или есть какой-то скрытый от меня смысл?

    Есть:

    It will handle cases with Symbol.toPrimitive correctly and throw correctly if template literal expression is a Symbol(). See babel/babel#5791.
    Ответ написан
    1 комментарий
  • Где ошибка в ToDo List на Vue?

    @gribanov2la
    Full stack web разработчик
    Это
    <li v-for="on in list" v-bind:key="on.key">{{ on.title }}<button v-on:click="deleteList(on.key)">Delete</button></li>

    Превратить в это
    <li v-for="(on, index) in list" v-bind:key="on.key">{{ on.title }}<button v-on:click="deleteList(index)">Delete</button></li>
    Ответ написан
    1 комментарий
  • Стоит ли переходить на React.PureComponent по-умолчанию?

    PQR
    @PQR
    React.PureComponent реализует метод shouldComponentUpdate таким образом, что он делает поверхностное сравнение props и state (не глубокое). Вот собственно код:
    https://github.com/facebook/react/blob/c8fbdac2271...
    shouldUpdate =
                !shallowEqual(prevProps, nextProps) ||
                !shallowEqual(inst.state, nextState);


    Что такое shallowEqual? Это по сути сравнение оператором === каждого элемента из prevProps с каждым элементом из nextProps. На всякий случай дам ссылку на реализацию для полного понимания: https://github.com/facebook/react/blob/6963ea4bfcd...

    В итоге всё зависит от структуры ваших props. Если в props вы передаёте объекты которые иногда мутируются, т.е. по ссылке они равны ===, но внутри какие-то данные поменялись (что само по себе выглядит странно в экосистеме redux + reselect, но вполне возможно технически), тогда использование PureComponent вам всё поломает, т.к. на экране какие-то компоненты перестанут перересовываться!

    Если же у вас всё по уму, данные которые передаются через props являются скалярными типами (string, int, float, bool) или immutable объектами, тогда смело используйте PureComponent - в некоторых случаях он поможет избавиться от лишних вызовов render.

    Важное замечание: PureComponent нужно использовать только для так называемых presentational components, т.е. для тех компонент, которые НЕ обёрнуты в вызов redux connect().

    Для container components (т.е. тех компонент, которые обёрнуты в redux connect()) нет смысла наследоваться от PureComponent, т.к. метод connect() оборачивает ваш компонент своей реализацией shouldComponentUpdate, которая также использует shallowEqual. Если вы по недосмотру унаследуете container component от PureComponent - ошибок не будет, но это не имеет никакого смыла, т.к. ваш код по сути будет дважды делать shallowEqual, а зачем делать лишнюю работу?

    Подводя итог, рецепт такой:
    - presentational components наследуем от React.PureComponent
    - container components (которые обёрнуты в redux connect()) наследуем от старого доброго React.Component
    Ответ написан
    1 комментарий
  • Webstorm vs VS Code 2019?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    Я бы хотел прекратить платить каждый год за WebStorm и пользоваться бесплатным опенсорсным софтом, но...

    Простой пример: есть export class MyClass {} в файле MyClass.js, переименовываем класс, WebStorm предлагает заодно переименовать файл и исправляет все импорты. И таких мелочей, которые снимают с человека дурацкую ручную работу -- полно. В VS Code такого нет.
    Ответ написан
    6 комментариев
  • CMS для создания документации?

    @devlocal Автор вопроса
    Нашел.
    Эта штука называется vuepress
    https://laravel-news.com/vuepress
    https://vuepress.vuejs.org/
    Ответ написан
    Комментировать
  • Где порешать задания на асинхронщину?

    mtix
    @mtix
    Front-end developer
    Могу посоветовать хороший курс по асинхронному программированию https://habr.com/ru/post/452974/ . Пройдите и у Вас не должно остаться вопросов.
    Ответ написан
    Комментировать
  • Как просматривать разрабатываемый сайт через телефон?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Просто сделать локальный сервер доступный по Wi-Fi и подключаться к нему с телефона.
    Ответ написан
    Комментировать
  • Как записать код php короче?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    $tel = $a ?: "телефон";

    echo ($a ?: "телефон");
    Ответ написан
    Комментировать
  • Какая существует лучшая литература про Linux?

    @vlarkanov
    Брайан Уорд, "Внутреннее устройство Linux", 2016
    Очень хорошо и подробно написано, читается легко.
    Ответ написан
    3 комментария