• Важно ли глубокое знание и владение фронтенд девелоперу canvas, 2d и webgl графики?

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

    Griboks
    @Griboks
    В отличии от программирования и подобных специальностей существуют три базовых способа изучить искусство управления:
    1. вуз
    2. специальные курсы + сертификация
    3. госты+стандарты+книги для расширенного понимания первых двух

    p.s.
    Alexander Lamdan утверждает, что
    Научиться быть руководителем это почти никак. Нужно к этому идти.


    Замечу, что это в корне неправильный подход, который ведёт к самодурству, неэффективной организации труда и коррупции. Вы действительно должны выработать свою точку зрения, но делать это самостоятельно и изолированно от обширных накопленных человечеством знаний займёт слишком много времени и других ресурсов - это путь в никуда для управленца.
    Ответ написан
    7 комментариев
  • Как отображать большое количество полигонов через ObjectManager в Яндекс картах?

    freeExec
    @freeExec
    Участник OpenStreetMap
    Нет таких вундеркиндов, способных умозреть 7 тысяч полигонов разом. В лучшем случае он будет видеть сплошную заливку. Вот её и показывайте, объединив всё это в несколько полигонов, визуально похожих на исходные.
    Ответ написан
    Комментировать
  • Из 16 Гб ОЗУ 7, что делать?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Народ, не надо тупить. Встроенная графика, память берется из оперативки. Соответственно 8 гиг откушено на потребности видюхи.
    Ответ написан
    6 комментариев
  • Как указать типы данных в импортируемом json файле?

    bingo347
    @bingo347 Куратор тега Node.js
    Crazy on performance...
    https://www.typescriptlang.org/tsconfig#resolveJso...

    Ну или создайте рядом с db.json файл db.json.d.ts со следующим содержимым:
    declare const JSON: {
        id: number;
    }[];
    export default JSON;
    Ответ написан
    Комментировать
  • Как распарсить такой JSON?

    Immortal_pony
    @Immortal_pony Куратор тега JavaScript
    но я никак не могу с ним работать, я пытался пропускать его через функции нормализации, но ни в какую

    А не надо бездумно совать свою строку какому-то левому коду и ожидать что он всё за тебя сделает.
    Надо проанализировать что ты получаешь и только потом начинать что-то делать.
    В данном случае видно две очевидные проблемы:
    1. В строке отсутствуют все закрывающие символы, которые должны быть в конце строки - кавычки, фигурные скобки, квадратные скобки - всё потеряли. В первую очередь надо найти того кто это написал, ткнуть его носом и громко и чётко произнести: "кто накодил? Кто накодил, а?", после чего посадить его исправлять серверную часть.
    2. Внутренний объект зачем-то закодирован в json второй раз. Тут уже можно не кричать, а дать лёгкого добродушного пинка backend-разработчику, но таким образом чтоб после этого его тело двинулось в сторону клавиатуры, используя которую, он исправит и этот косяк.

    const weirdString  = fetch() // здесь получаешь свою странную и  корявую строку
    const jsonEncoded = weirdString + '\\"}]}]"}' // для примера я вручную посчитал всё закрывающее барахло, но, возможно что для этого надо будет написать отдельную функцию. Ну, тут сам справишься, я думаю
    const decodedOnce = JSON.parse(jsonEncoded) // раскодируем первый раз
    const decodedTwice = JSON.parse(decodedOnce['21']); // раскодируем второй раз внутренний объект.
    Ответ написан
    Комментировать
  • Vue вычислить и вписать новое свойство в обьект(this.$set is not a function)?

    IceRD
    @IceRD
    computed - должен выполнять только вычисление и возвращать результат, он не должен мутировать данные.
    Для изменения данных используйте methods или watch
    Ответ написан
    Комментировать
  • На собеседовании сказали, что не все функции - замыкания. Так ли это?

    snaiper04ek
    @snaiper04ek
    Не стреляйте в эникея, он админит как умеет
    парень. Всё равно ты будешь использовать ту терминологию, которую используют на работе. Если там под замыканием подразумевается замыкание с инкапсуляцией, то после того как тебе сказали что "твой код - говно", было два варианта: 1)поговорить о терминах либо со ссылкой на официальную документацию, либо вместо с собеседником вывести определение исходя из смысла понятия, не прибегая к авторитетам вообще. 2) Сказать о том, что прочитал такое определение у %авторитет%, и сказать, что готов использовать то, которым пользуетесь вы на работе.

    По поводу выведения определения: есть смысл замыкания. Его нужно чётко озвучить согласиться с ним. Например, ты хочешь сказать, что смысл замыкания это ничто иное как "повесить ссылку на переменную с которой окончена работа до объявления функции, для сейва от мусорщика". Спросить - согласен ли с этим собеседник, или есть дополнения/возражения. Если согласен - значит "функция, являющаяся замыканием - любая функция, которая ссылается на переменную вне своего тела, в случае если переменную иначе удалил бы сборщик." Далее нужно договориться, что "иначе удалил бы" можно опускать как лишнюю сущность, которая усложняет определение такой функции, и упростить до - "функция, ссылающаяся на переменную вне своего тела."

    Есть второй вариант: собеседник тебе говорит: "Ахтунг! Замыкание используется не просто для того, чтобы спасти переменную от удаления! Это ещё и способ сокрытия данных: замыканием можно использовать локальную глобальную переменную, вместо того чтобы использовать просто глобальную переменную, или же городить отдельный класс."
    В этом случае всё твое определение идёт в пешее эротическое, и ты соглашаешься, что для этого придётся обернуть функцию в функцию, чтобы у тебя была функция с локальными переменными, которые будут глобальными для этой функции в функции.
    Ответ написан
    13 комментариев
  • Styled components или БЭМ?

    @karminski
    Senior React.JS Developer
    Ответ написан
    Комментировать
  • Как сделать cекундомер без setInterval и setTimeout?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Я за RAF! : )

    let rafSeconds = 0;
    const rafStart = Date.now();
    const tick = () => {
      const seconds = (Date.now() - rafStart) / 1000 | 0;
      if (rafSeconds !== seconds) { // секунды изменились!
        rafSeconds = seconds;
        // TODO: отрисовать новые секунды
      }
      window.requestAnimationFrame(tick);
    }
    
    tick();
    Ответ написан
    2 комментария
  • Как обернуть элементы, между триггерных элементов?

    hahenty
    @hahenty
    ('•')
    wd = document.createElement( 'div' );
    document.querySelectorAll( 'p.start ~ p:not( p.end ~ p, p.end )' ).forEach( p => wd.append( p ) );
    document.querySelector( '.blocks' ).insertBefore( wd, document.querySelector('.end') );
    Ответ написан
    Комментировать
  • Как из массива рандомных натуральных чисел вычислить две равные суммы?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Это задача - вариант Subset sum problem.

    Она NP-полная - тут нет быстрых и простых решений. В общем случае, возможно только решение полным перебором за N*3^N. Что-то вроде того, что предложил Alexandroppolus, только там вообще не рассматривается случай, что текущее число просто пропускается. Еще можно делать это же без рекурсии на основе битовых масок.

    Если есть какие-то дополнительные условия (например, все числа очень маленькие), то может более быстрым быть решение на основе динамического программирования, как в задаче о рюкзаке.
    Ответ написан
    1 комментарий
  • Как оптимально перебрать все возможные комбинации 4х массивов?

    @rPman
    ip4 адрес это число 32бит, все ip адреса тут это все значения unsigned int32 от 0 до 0xFFFFFFFF
    т.е. пишешь один единственный цикл от 0 до 0xFFFFFFFF а затем из числа получаешь ip в нужном тебе виде, либо последовательным получением остатка отделения на 256, либо вручную побитовыми операциями (маска и сдвиг) либо сконвертировав число в массив байт
    Ответ написан
    Комментировать
  • Как решить ошибку Cannot GET /solm?

    delphinpro
    @delphinpro
    frontend developer
    В любой непонятной ситуации ВСЕГДА сначала читай документацию.
    Особенно такую хорошую, как у вью.
    Вот этот раздел, до просветления: https://router.vuejs.org/ru/guide/essentials/histo...
    Ответ написан
    Комментировать
  • Агрегация сетевых каналов?

    gbg
    @gbg Куратор тега Компьютерные сети
    Любые ответы на любые вопросы
    Все правильно. Два гигабита между двумя конкретными хостами можно получить только при политике Round-Robin, (когда пакеты по очереди попададают то в один, то в другой сетевой интерфейс).

    Венда и циско это не поддерживают - только линукс и микротик.

    В остальных случаях, вы будете иметь ускорение для доступа от разных хостов (потому что при политике разделения по макам, которая является дефолтной, пакеты в интерфейсы будут попадать в зависимости от MAC)
    Ответ написан
    1 комментарий
  • Нужно ли оборачивать сбор данных из формы в promise?

    Stalker_RED
    @Stalker_RED
    Нет, не нужно делать ее асинхронной, из формы и синхронно получится данные собрать.

    1. Если вдруг вы переделаете форму так, чтобы у полей были name, то можете выбросить функцию getSaveData и использовать $(form).serialize();

    2. сбор данных не обязательно записывать в переменную, да еще и объявленную через let. Можно делать прямо вот так:
    $.ajax({
        url: 'www.expample.ru/file.php',
        type: 'POST',
        data: { data: getSaveData() },  // переменная data не нужна
        // ...
    })


    или, если у ваших полей есть имена
    $.ajax({
        url: 'www.expample.ru/file.php',
        type: 'POST',
        data: { data: $(form).serialize() },
        // ...
    })

    и можно использовать встроенный в браузер способ
    $.ajax({
        url: 'www.expample.ru/file.php',
        type: 'POST',
        data: { data: new FormData(form) },
        // ...
    })


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

    Соответственно правильнее будет куак-то так:
    const $form = $("#idForm");
    $form.on('submit', function(evt) {
        evt.preventDefault(); // отмена обычной отправки
        
        $.ajax({
               type: "POST",
               url: $form.attr('action'),
               data: $form.serialize(),
          // ...


    А если вам вдруг не нужна поддержка очень старых браузеров, то можно вообще выбросить jQuery
    const form = document.getElementById('myForm');
    
    form.addEventListener('submit', function(evt){
      evt.preventDefault();
      fetch(form.action, {
        method: 'POST',
        body: new FormData(form)
      });
    });

    https://developer.mozilla.org/ru/docs/Web/API/Fetc...
    Ответ написан
    2 комментария
  • Как написать подобный функционал на node js (express)?

    bingo347
    @bingo347 Куратор тега Node.js
    Crazy on performance...
    node.js и express тут не причем, а вот что при чем - так это БД, а Вы не указали, какую БД используете.
    В большинстве БД, которые умеют unique, используют для этого индексы, а индексы можно строить не только по 1 полю, но и по группе полей. В вашем случае unique index должен состоять из двух полей - user_id и task_id, что сделает их уникальными именно в паре.

    P.S. мне кажется не очень хорошая идея давать юзеру самому задавать id, особенно для тех сущностей, что юзер может создавать более одной.
    Ответ написан
    Комментировать
  • Как реализовать такой блок?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    1 комментарий
  • Как сделать так чтобы доступ к backend api был запрещен?

    deepblack
    @deepblack
    Конечно можно, нужно отключить бэкенд. Тогда и доступа не будет
    Ответ написан
    Комментировать