• Как отследить цепочку событий для функции в js?

    Ищи в коде
    history.pushState
    history.replaceState
    Ну или любое обращение к history
    https://developer.mozilla.org/en-US/docs/Web/API/H...
    Ответ написан
    Комментировать
  • Опасно ли на сервере использовать http-зеркала репозиториев, вместо https? Есть ли риск того, что пакеты могут быть подделаны?

    Lynn
    @Lynn
    nginx, js, css
    Безопасно, если вы не отключали проверку GPG подписей
    Ответ написан
    Комментировать
  • Уместны ли каверзные вопросы на собеседовании?

    Конкретно эти вопросы вполне уместны. Но я бы их сформулировал так, чтобы не сбивать человека с толку, он и так в стрессе, а при нынешнем голоде на рынке нет никакого толку отсеивать умных людей только потому что они немного растерялись.
    1) Это на знание отличия между тем как опустошаются очереди микро и макро задач.
    2) Это на знание промисов
    Вполне себе покрываются обычными вопросами на то как это все работает.
    Ответ написан
    3 комментария
  • Уместны ли каверзные вопросы на собеседовании?

    saboteur_kiev
    @saboteur_kiev Куратор тега Карьера в IT
    software engineer
    Странный вопрос.
    На собеседовании все уместно. Ты же не забывай, что собеседование это не ЕГЕ.
    Это диалог двух сторон. Если кандидату не понравился вопрос, он может встать и уйти.
    Если он не знает ответ, он может что-то насочинять, и если ты грамотный специалист ты увидишь что он тут отгадывает или точно знает.

    У меня для собеседований есть небольшой опросник, в котором чуть ли не каждый второй вопрос идет с небольшим подвохом, и по полноте ответов я понимаю насколько глубоко кандидат шарит. Но мне не всегда необходимо найти того, кто ответит на все 100% вопросов развернуто.
    Я просто оцениваю что кандидат знает, а с чем сталкивался настолько регулярно что прям помнит наизусть детали без мануала.

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

    vabka
    @vabka
    Токсичный шарпист
    Ну и к тому что уже упомянуто:
    https://vitejs.dev/
    https://www.snowpack.dev/
    Ответ написан
    Комментировать
  • Как упростить проверку числа на палиндром и увеличить скорость выполнения кода?

    WblCHA
    @WblCHA
    const isPalindrome = num => {
        let revNum = 0;
        for(let j = num; j > 0; j = Math.trunc(j / 10)) {
          revNum = revNum * 10 + (j % 10);
        }
        return num === revNum;
      }
    Ответ написан
    Комментировать
  • На чём написан язык программирования C?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Учтите, что язык программирования - это просто набор спецификаций и правил. Он написан на английском языке.

    Если же вас интересует на чем запрограммированы компиляторы языка С, то самые популярные нынче развивающиеся компиляторы написаны на C и C++ соответственно:
    gcc: https://github.com/gcc-mirror/gcc
    clang: https://github.com/llvm/llvm-project/tree/main/clang

    Вы спросите, а как компилятор языка Си написали на самом Си? Ответ прост - первые компиляторы были написаны на ассемблере. Они были очень простыми и тупыми, возможно не умели понимать все тонкости языка. Когда появился достаточно работающий компилятор с минимальным набором функций, можно было переписать его на Cи и скомпилировать первым компилятором. После этого стало можно компилировать компилятор на Си самим собой.

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

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

    @rPman
    направления решения задачи многопользовательского редактирования:

    - нулевое, самое злобное для клиентов, выдавать ошибку, при попытке сохранить документ, если его редактировали, обновлять форму и предлагать ввести все заново, реализуется полем 'last modified time', которое загружается на форму и отправляется с запросом на обновление, если сервер видит их разными - писать ошибку.

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

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

    - третье, наилучшее в современных реалиях, применять изменения и выводить их в тот же момент как они вносятся на форму, как документы google docs, видно в какой ячейке какой пользователь сейчас поставил курсор, можно даже подсвечивать цветами, с затуханием. Рекомендуется, как ни странно достаточно проста в реализации, если интерфейс client side javascript а не генерация html на сервере.

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

    yarkov
    @yarkov
    Помог ответ? Отметь решением.
    Гуглить pwa
    Ответ написан
    Комментировать
  • Приоритет в асинхронном коде, как это работает?

    Alexandroppolus
    @Alexandroppolus
    кодир
    1) Просто вызов: оба хендлера последовательно запускаются в одном и том же синхронном коде (в текущем таске), ставят в очередь 2 микротаска.

    2) Через клик: на каждый хендлер создается отдельный таск в event-loop, таски отрабатывают по очереди, каждый из тасков создает по одному микротаску, последний выполняется до перехода управления к след. таску.
    Ответ написан
    Комментировать
  • Как написать свой скриптовый язык?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Статей для этой задачи будет мало. Тут нужен как минимум SICP, а ещё лучше книга дракона.
    Ответ написан
    9 комментариев
  • Что нужно уточнить на собеседовании?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Все, что хотите узнать. Собеседование - это взаимная оценка двух сторон - в которой каждая сторона решает, подойдет ли ей другая. Поэтому спрашивайте все, что интересно - белая ли зп, какой график работы, бывают ли переработки, как с отпусками, больничными и необходимостью внезапно отпроситься, есть ли удаленка, как и по каим дням выдается зп, какой банк зарплатный (будет зарплатным банк #опа Мира Ltd. и будете мотыляться к единственному банкомату в городе), как с дисциплиной и контролем за юзерами (а то может быть, Вы категорически не приемлете СМП)...
    Ответ написан
    6 комментариев
  • Что нужно уточнить на собеседовании?

    saboteur_kiev
    @saboteur_kiev Куратор тега Карьера в IT
    software engineer
    Уточните нужные для вас условия работы.
    Расписание и наличие овертаймов.
    Кто принимает решение о размере ЗП и есть ли регулярные пересмотры. Бывают ли задержки, привязана ли ЗП к курсу валюты
    Как определяется прохождение испытательного срока.
    Будет ли выделен индивидуальный ментор.
    Есть ли какие-то бонусы в компании кроме ЗП (страховки, бесплатные курсы английского), командировки.

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

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Критерии прохождения испытательного срока.
    Ответ написан
    Комментировать
  • Как заменить все вхождения на различные значения?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Очень просто. Решение «в лоб»:
    1. Разложить число на цифры (в виде массива)
    2. Разложить шаблон на массив кусков (где разделителем будет "#")
    3. Убедиться, что количество цифр и «дырок» - совпадает
    4. Склеить два массива, чередуя элементы (в цикле или нативной функцией)

    Как по мне, никакой из пунктов не может вызвать трудности даже у начинающего программиста.

    P.S. Есть варианты решения лишь с одним массивом или вообще без них.
    Ответ написан
    Комментировать
  • Как реализовать битовую матрицу оптимально по памяти?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Максимально компактно - хранить одномерную матрицу в битах целочисленного массива - по 8 бит на байт.

    Для матрицы NxM бит (i,j) будет лежать в (i*N+j)/8 ячейке массива. Номер бита - надо взять остаток от деления на 8.

    Можно получить любой бит и можно что угодно делать с матрицей.
    Ответ написан
    Комментировать
  • Как вернуть новый массив объектов только с уникальным id вложенного объекта?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Какие тут есть варианты:

    Object.values(Object.fromEntries(arr.map(n => [ n.user.id, n ])))
    
    // или, если в результирующий массив должны попадать те из "одинаковых" элементов,
    // что расположены в исходном массиве первыми
    
    Object.values(arr.reduce((acc, n) => (acc[n.user.id] ??= n, acc), {}))
    
    // или, если также надо сохранять взаимное расположение элементов
    
    arr.filter(function({ user: { id: n } }) {
      return !(this[n] = this.hasOwnProperty(n));
    }, {})

    Можно решить задачу и в более общем виде - сделаем генератор, выдающий уникальные значения на основе следующих параметров:
    • Данные, подлежащие уникализации. Не обязательно массив, это может быть любой итерируемый объект - строка, Map, NodeList и т.д.
    • Функция, принимающая значение, выдаваемое итератором, и возвращающая значение, по которому осуществляется уникализация.

    function* unique(data, key = n => n) {
      const keys = new Set;
    
      for (const n of data) {
        const k = key(n);
        if (!keys.has(k)) {
          keys.add(k);
          yield n;
        }
      }
    }

    Теперь можно делать так (ваш случай): const result = [...unique(arr, n => n.user.id)];.

    Или так: ''.concat(...unique('ABBA')) // 'AB'.

    Или так:

    for (const n of unique(Array(20).keys(), n => Math.sqrt(n) | 0)) {
      console.log(n); // 0 1 4 9 16
    }
    Ответ написан
    Комментировать
  • Как поменять домен на локальном сервере?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Подскажите как можно установить ему купленный домен

    1. Арендовать у своего провайдера белый IP-адрес
    2. Прописать его в A-запись доменной зоны
    3. Прописать доменное имя в настройках своего web-сервера
    4. Настроить проброс портов на своём маршрутизаторе


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

    Незарегистрированное доменное имя не обслуживается dns-серверами. Поэтому каждый клиент должен будет прописать соответствие между этим доменным именем и вашим IP-адресом себе в файл hosts. Иначе работать ничего не будет.
    Ответ написан
    Комментировать
  • Почему не берут на работу (Junior/Intern C#)?

    @d-sem
    Так как резюме не приложено, то придется строить догадки.

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

    Джун должен уметь то, что требуют на вакансии.

    Ну и обычно HR аргументируют свой отказ.
    Ответ написан
    Комментировать