• Почему не происходит перендеринг?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    Включи предупреждения в консоли. Ты пытаешься изменять массив напрямую в store, чего делать нельзя.
    const arr = this.$store.getters.templatesList.slice(0);

    Ну и для сортировки есть встроенный метод sort:
    arr.sort(({created_at:a}, {created_at:b}) => a < b ? -1 : a > b ? 1 : 0);
    Ответ написан
    1 комментарий
  • Как можно корректно написать асинхронный метод у объекта в typescript с дженериком?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Что именно ты хочешь сократить, вроде ж дальше некуда: один тип на вход - один на выход?

    Ну можешь убрать async и await, они здесь не нужны:
    const ApiServiceModule = {
      get: <T>(url: string): Promise<T> => fetch(url)
        .then(response => response.json())
        .catch(err => console.error(err))
    }
    async/await всего лишь сахар над Promise и в данном случае ничего не делают, т.к fetch и так возвращает Promise.

    P.S. Ну и методом я бы это не назвал, это свойство с функцией. Метод имеет доступ к this.
    Ответ написан
    Комментировать
  • Как решить задачу?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Быстрое решение - построить для этого массива суффиксное дерево алгоритмом Укконена (или вот ссылка), потом обойти его, найти самую глубокую вершину, у которой есть более одного ребенка, и вывести путь до нее от корня. Работает за O(n).

    Edit:

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

    И еще проще, но уже за куб - переберите любые 2 позиции и потом одним циклом считайте, сколько символов с этих позиций совпадают.
    Ответ написан
    3 комментария
  • Существует ли обратный прокси для ssh?

    @q2digger
    никого не трогаю, починяю примус
    почитайте что такое ssh jump host (или ssh bastion host).

    Вот неплохая ссылка.
    https://www.redhat.com/sysadmin/ssh-proxy-bastion-....
    Ответ написан
    Комментировать
  • Где используется c#?

    Chronicler
    @Chronicler
    Программист
    C# это кроссплатформенный язык. Он используется для разработки под macOS, Android, iOS, для бекенда. Используйте его для всего что вам нравится
    Ответ написан
    Комментировать
  • Как отследить изменение input.value, если его меняет другая функция?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Правильный ответ: писать код предусматривающий подобные вещи через абстракции. Тебе не надо триггерить события, ты должен при установке значения напрямую вызывать нужные функции. Ты сам знаешь что у тебя в коде происходит и какие функции привязаны к событиям, тебе не нужно ждать событий от браузера.
    Полезный ответ: использовать любую библиотеку умеющую в data binding, которая будет заботится о таких вещах за тебя. Мне лично нравится Vue, но есть и множество решений по-проще и по-традиционней.
    Плохой ответ: ты можешь добиться этого примерно таким извращением, подменив стандартный сеттер на value:
    const valueDescriptor = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value');
    Object.defineProperty(two, 'value', {
      ...valueDescriptor, 
      set(value) {
        valueDescriptor.set.call(this, value);  
        this.dispatchEvent(new Event('input', {
          bubbles: true,
          cancelable: true,
        }));
      } 
    })
    Ответ написан
    Комментировать
  • Зачем сайтам redirect при переходе на ссылку?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    По множеству причин.
    Например вас предупредить что вы идете в дикий интернет.
    Записать ваше действие
    Впарить вам реферала
    ....
    Ответ написан
    6 комментариев
  • Как на javascript замерить время выполнения функции (в наносекундах)?

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

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

    поэтому правильно вызывать функцию много раз и считать среднее.
    так же в ноде есть process.hrtime которая дает наносекунды.

    оба этих метода "в лоб" не дадут нормального результата. Почему? потому что в реальности происходит много всего интересного при выполнении кода.

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

    Переключение происходит на лету и в общем виде вы не знаете когда это происходит.

    поэтому само по себе замерение скорости "функции" имеет мало смысла, так как там их несколько внутри. Если интересны детали - погуглите JIT, AOT и v8 optimizations.
    Сейчас важно то что есть "холодные" функции которые работают медленее но надеждее и как правило используются сразу и есть "горячие" варианты, которые компилятор начинает использовать когда видит что код вызван много раз, и условия не меняются. "Горячие" работают быстрее.

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

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

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

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

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

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

    Aetae
    @Aetae Куратор тега TypeScript
    Тлен
    Тут есть несколько решений.
    Например:
    type TupleUnion<U extends string, R extends string[] = []> = {
    	[S in U]: Exclude<U, S> extends never ? [...R, S] : TupleUnion<Exclude<U, S>, [...R, S]>;
    }[U] & string[];
    
    interface Interface {
      foo: boolean;
      bar: string;
      baz: object
    }
    
    type Keys = TupleUnion<keyof Interface>; 
    
    let keys: Keys;
    
    keys = ['foo', 'bar', 'baz']; // OK все ключи указаны
    keys = ['foo']; // NOT OK указаны не все ключи
    keys = ['foo', 'bar', 'another bar']; // NOT OK один из ключей не совпадает

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

    KorniloFF
    @KorniloFF Куратор тега JavaScript
    Работаю по font-end / JS
    Как-то так? Это я уже на подобный вопрос отвечал. Тут не 1 на 1, но игра та же:
    Ответ написан
    7 комментариев
  • Как решить проблему с js в google chrome?

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

    Ошибка говорит "запросы у которых в url символы '<' '\n' '\t' '\r' блокируются.
    вам надо найти то место где делается этот запрос, отдебажить, посмотреть на урл и найти там эти символы. Потом подумать откуда они там взялись и исправить то место.

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

    0xD34F
    @0xD34F
    Внизу страницы есть ссылка "Обратная связь". По ссылке - форма. В форме - выпадающий список. В выпадающем списке пункт - "Нарушение правил сайта". Вот его и выбираете. Чуть пониже поле - "Текст сообщения". Там излагаете суть вопроса - кто, чего и как. Ещё ниже кнопка - "Отправить сообщение". Жмёте её.
    Ответ написан
    1 комментарий
  • Как сверстать такую кнопку?

    RAX7
    @RAX7
    Ответ написан
    Комментировать
  • Не рано ли изучать Rust?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Я думаю, что стоит учить Rust именно сейчас потому, что язык перспективный. Вакансии начнут появляться через пару-тройку лет. Язык сложный, поэтому нужно время на его изучение. Пока выучите и рынок подтянется.
    К тому времени будете в топе разработчиков с реальным опытом.
    У Rust есть хороший потенциал по вытеснению C, особенно с учетом того, что его дизайн способствует эффективному применению в многопоточных системах. Ввиду предстоящего бума ARM-процессоров перспектива очень даже заманчива.
    На текущий момент Rust + работа зарубежом (фриланс) вполне нормальная перспектива.
    Ответ написан
    7 комментариев
  • Что лучше openGL или GTK+?

    2ord
    @2ord
    GTK - графический набор инструментов для построения типичных оконных приложений. OpenGL - для построения графических
    2D/3D сцен (анимации и прочее).
    Ответ написан
    Комментировать
  • Что писать в скобочки в названии функции?

    @Steppp
    const a = 10;
    const b = 2;
    const c = 4;
    
    function calc(first, last) {console.log(first + last);}
    
    calc(a, b);
    calc(a, c);

    тоесть мы в функцию передаем параметры!
    Ответ написан
    3 комментария
  • Map, почему функция возвращает массив а не Map?

    Psixodelik
    @Psixodelik
    Преподаватель на Hexlet
    Ну так что ты в итоге возвращаешь?

    return [...newArr, ...getArraysCounts1(other)];

    А должен возвращать Map
    Ответ написан
    Комментировать
  • Как вы запоминаете термины языка?

    Psixodelik
    @Psixodelik
    Преподаватель на Hexlet
    Это вы себя накручиваете.

    Никто специально не сидит и не учит все термины. Тут как с другим языком — чем больше общаешься, тем лучше запоминаешь. Тут тоже самое: чем больше используешь определённые технологии, тем больше будешь знать терминов из этой области. А что не используешь, то конечно же забываешь. Не бери в голову. Если собес не проходит только из-за :not, то оно и к лучшему
    Ответ написан
    Комментировать