• Как при вводе определённых символов удалять их и выводить сообщение через alert?

    @ivan386
    $('#vin').change(e, function() { // меняем на change 
        let vin = $(this).val();
        let result; 
        if (vin.match(/[,./QqIiOoAaА-Яа-яЁё-]/g)) { // для того чтобы минус не обозначал диапазон пишем его в конце набора
         	alert("Здесь сообщение");
         	result = vin.replace(/[,./QqIiOoAaА-Яа-яЁё-]/g, "");
            $(this).val(result); // возвращаем в инпут правильный текст
       }
       else
             result = vin;
    
        $("#checkVin").html(result);
     });
    Ответ написан
    Комментировать
  • Как скачать торрент по magnet- ссылке, если клиент реализован через тор и dht фактически не активен?

    @ivan386
    Если в magnet-ссылке указан адрес трекера то клиент получит от него список пиров а от них уже скачает инфо и файлы.

    Соответственно если в magnet-ссылке не указан трекер:
    magnet:?xt=urn:btih:c12fe1c06bba2542222227c1367a88a


    то его можно добавить в ручную:

    magnet:?xt=urn:btih:c12fe1c06bba2542222227c1367a88a&tr=http://example.com/announce


    Адрес трекера можно взять например здесь: https://trackerlist.org/
    Только важно чтобы он начинался на https или http.
    Ответ написан
    Комментировать
  • Как этот код записать без использования jQuery?

    @ivan386
    document
    .querySelectorAll(".window")
    .forEach(
    	(e)=>{
    		e.style.transition = "right 1s";
    		e.style.right = `${(x*100)+(x*8-10)-100}px`;
    	}
    );
    Ответ написан
    Комментировать
  • DHT. Как реализовать безтрекерный обмен файлами?

    @ivan386
    ID для узла выбирается уже не случайно https://www.bittorrent.org/beps/bep_0042.html
    Но если не предполагается анонса и приёма запросов то ID можно выбрать любой. Не все клиенты реализовали этот BEP.

    1. router.utorrent.com: 6881 - используется только для первичного получения списка узлов командой find_node. Она не требует info_hash а только id узла и target которые могут быть одинаковы так как мы ищем свою позицию в сети.

    В дальнейшем router.utorrent.com: 6881 не должен использоваться больше никак.

    2. routing table должен содержать значения для каждого узла: id, ip(v4 или v6), port, время последнего ответа.

    Её периодически нужно сохранять на диск и при следующем старте пытаться загрузиться уже с неё.

    3. Из таблицы выбираются ближайшие по id узлы к target или info_hash. И к ним соответственно отправляются find_node или get_peers.

    announce_peer возможен только после get_peers так как нужен токен для анонса который в ответе на get_peers.

    find_node используется для нахождения ближайших к своему id узлов. Также периодически можно искать случайные id для пополнения routing table.

    В какую таблицу мы складируем инфохэши от собственных и полученных файлов?


    Соответственно нужна отдельная таблица в которой по info_hash будет храниться список пиров.

    Запрос 'ping' делаем только в router.utorrent.com: 6881 или по всем нодам из routing table?


    Ни в коем случае. Работа с ним закончена на первом этапе.

    Ping нужно отсылать только на узлы из routing table с которыми длительное время не было связи. До тех пор пока узлы не ответят на ping их нельзя отдавать другим узлам на их запросы. Соответственно и узлы полученные от другого узла нельзя отдавать дальше до проверки их состояния.

    Другие узлы также будут проверять этот пингуя или опрашивая его.
    Ответ написан
    1 комментарий
  • Как отменить .appendTo и другое?

    @ivan386
    Я бы без JS решил так.

    html:
    <div class="wr">
      <div class="block block__6">БЛОК 6</div>
      <div class="block block__5">БЛОК 5</div>
      <div class="block block__4">БЛОК 4</div>
      <div class="block block__3">БЛОК 3</div>
      <div class="block block__2">БЛОК 2</div>
      <div class="block block__1">БЛОК 1</div>
      </div>


    css:
    .wr {
      display: flex;
      flex-flow: wrap-reverse;
      flex-direction: row-reverse;
    }
    
    .block {
      width: 33%;
    }
    
    @media (max-width: 600px){
      .block {
       width: 25%; 
      }
      .block__1 {
        order: -1;
      }
    }


    demo: https://jsfiddle.net/t6a9Lbju/2/
    Ответ написан
  • Javascript увеличение значение по клику?

    @ivan386
    var start = 6;
    $("#loadmore").click(function(){
      start = parseInt(start)+4;
       console.log(start);
      });
    Ответ написан
    1 комментарий
  • Как перезаписать значение переменной?

    @ivan386
    var str = 'abccba';
    
    function checkPalindrome(str) {
            var originStr = str;
            var reverseStr = str.toLowerCase().split("").reverse().join("");
    
            if (originStr === reverseStr) {
                var palindrome = document.createElement('li');
                palindrome.innerHTML = str;
                list.appendChild(palindrome);
                return originStr.slice(1, -1);
            }
            return originStr;
        }

    В месте вызова функции:
    str = checkPalindrome(str)
    А лучше для глобальных и локальных переменных использовать разные имена чтобы одна другую не перекрывала.
    Ответ написан
    Комментировать
  • Как сравнить в execute vk?

    @ivan386
    Если посмотреть на возвращаемое значение
    var a=API.groups.getById({"group_ids":"1","fields":"members_count,can_post"});
    
    return a@.can_post;

    Получим:
    response: [0]
    Нам дали массив вместо числа.
    Соответственно правильным будет код.
    var a=API.groups.getById({"group_ids":"1","fields":"members_count,can_post"});
    
    if (parseInt (a@.can_post[0]) != 0){
    return "Можно писать";
    }else{
    return "Нельзя писать";
    }

    Получаем:
    response: 'Нельзя писать'
    Ответ написан
    Комментировать
  • Как изменить запускаемый файл по F5 на VS2008 С++?

    @ivan386 Автор вопроса
    Оказывается настройка эта хранилась в свойствах запускаемого проекта.
    Properties -> Debugging -> Command
    Ответ написан
    Комментировать