Задать вопрос
Профиль пользователя заблокирован сроком с 21 сентября 2022 г. и навсегда по причине: Нарушение п.6.4, 6.6 Регламента. Накрутка, использование более одного аккаунта.
  • Какой яп лучше подойдет для метапоисковой системы?

    @d-sem
    Язык лишь позволяет реализовать архитектуру. Даже на языках, более приспособленных к асинхронной работе, с плохой архитектурой получите тоже самое исчерпание ресурсов пока вы рассуждаете рамками одного скрипта. А с учетом незнания особенностей этого нового языка можно потерять очень много времени на дебаг.

    Поэтому выход в архитектуре. Асинхронность реализуется через очереди, а снижение нагрузки через кеширование.

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

    Пример:
    1. Точка API где собираются результаты паралельных запросов - Node.js с промисами которые работают с очередями для общения с п.2 и п.3, при необходимости в будущем переписать на golang, если будет тормозить;
    2. Точки где не нужны высокие нагрузки и много логики - php, python, любой язык который хорошо знаете. Если будет что-то становиться узким местом - переписывать компилирируемое и оптимизировать;
    3. Где высокая нагрузка - что-то компилируемое вроде golang.

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

    @AlexVWill
    Можно, и конфликта не будет. Одно условие, надо из развести по разным адресным пространствам. Пусть например для OpenVPN будет 10.100.0.0/24, а для WireGuard 10.100.1.0/24
    Ответ написан
    3 комментария
  • Лёгкая задачка js, как возвести в квадрат с таким принципом (2∗n−1)?

    @Dazmond Автор вопроса
    Путем долгих переборов нашел ответ, не понимаю до конца как это работает, мне кажется и в первом случае должно было но вот что получилось

    function testCycle(n) {
        var x = '';
        var y = 0;
        for (var i = 1; i <= n; i++) {
        	y += (2 * i - 1);
        	x += y + ' ';
        	}
        return x;
    }
    console.log(testCycle(6)); 
    //1 4 9 16 25 36
    Ответ написан
    Комментировать
  • Лёгкая задачка js, как возвести в квадрат с таким принципом (2∗n−1)?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Ошибка в том, что работаете с текстовой строкой. А надо с числом.
    function testCycle(n) {
        // var x = ""; // зачем нам текст
        let x = 0; // число!
    //    for (i = 1; i <= n; i++){ // но надо до 2n–1 с шагом 2
        for (i = 1; i <= (2 * n - 1); i += 2) {
    //    x += (2*i-1) + "  "
          x += i;
          console.log(i, x);
        }
        return x;
    }
    
    testCycle(6)  /*
    1 1
    3 4
    5 9
    7 16
    9 25
    11 36
    36
    */

    Или можно, как вы изначально написали, производить вычисления (умножать-вычитать) на каждом шаге. Избавившись таки от текстовых строк:
    function testCycle(n) {
      let result = 0;
      for (let i = 1; i <= n; i++) {
        result += 2 * i - 1;
        console.log(i, result);
      }
    
      return result;
    }
    Ответ написан
    Комментировать
  • Как сделать расширяющийся блок на css и наверное js?

    @hulq
    HTML:
    <body>
      <div id="k"></div>
    </body>


    CSS:
    #k {
      position: absolute;
      width: 100%;
      height: 100px;
      bottom: 0;
      background: green;
    }


    JS:
    const object = document.querySelector('#k');
    
    object.onmousedown = function(event) {
    
      let shiftY = event.clientY - object.getBoundingClientRect().height;
    
      object.style.zIndex = 1000;
      document.body.append(object);
    
      moveAt(event.pageY);
    
      function moveAt(pageY) {
        object.style.height = shiftY - pageY + 'px';
      }
    
      function onMouseMove(event) {
        moveAt(event.pageY);
      }
    
      document.addEventListener('mousemove', onMouseMove);
    
      object.onmouseup = function() {
        document.removeEventListener('mousemove', onMouseMove);
        object.onmouseup = null;
      };
    
    };
    
    object.ondragstart = function() {
      return false;
    };


    Как-то так
    Ответ написан
    Комментировать
  • Как отключить Tab на сайте?

    Anopeng
    @Anopeng
    Веб-программист, учу фронт и бек
    Не рекомендую так делать. Многим удобнее делать навигацию по сайту с помощью Tab, чем мышью. А ты просто ее отключишь

    window.onkeydown = evt => {
        if (evt.key == 'Tab') {
            evt.preventDefault();
        }
    }
    Ответ написан
    4 комментария
  • Воспроизведение звука при наведении курсора мыши на объект?

    Anopeng
    @Anopeng
    Веб-программист, учу фронт и бек
    const yourSound = new Audio();
    yourSound.src = 'myAudio.wav'; // ссылка на аудиофайл
    document.getElementById('block').onmouseover = function () {
        yourSound.play();
    }
    Ответ написан
    Комментировать
  • Как сделать проверку открытых сайтов на js?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    написать расширение для браузера и заставить всех его установить себе
    Ответ написан
    Комментировать
  • Как сохранить введённые input с первой страницы, чтобы они выводились на другой странице?

    Anopeng
    @Anopeng
    Веб-программист, учу фронт и бек
    // На странице с инпутом:
    document.getElementById('myInput').oninput = function () {
        sessionStorage.setItem('my-input_save', this.value);
    }
    
    // На странице вывода:
    alert(sessionStorage.getItem('my-input_save'));
    Ответ написан
    Комментировать
  • Безопасен ли VPN?

    paran0id
    @paran0id
    Умный, но ленивый
    Мне не нравится эта инструкция. В ней предлагается сомнительный хостинг, и, что хуже, волшебный инсталлятор, который делает всё сам.

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

    Если хотите безопасности, не используйте того, чего не понимаете полностью. Или делегируйте задачу специалисту, которому доверяете.

    UPD:
    Ок ладно, я заглянул в этот инсталлятор, вроде ничего катастрофического, он там wireguard ставит.
    Во всяком случае, та версия, которая в данный момент там лежит в main.
    Содержимое файла в ветке main по ссылке в любой момент может измениться. Было бы надёжнее, если бы они ссылались на хэш коммита, а не на main.
    И это не отменяет того факта, что НИЗЗЗЯ качать непонятные файлы из интернета и тут же исполнять их от имени рута.
    Ответ написан
    Комментировать