• Какие есть терминальные сервера под линукс?

    @lemix85
    Не думаю, что RDP вам вообще стоит рассматривать, ибо каждое подключение будет поражать новый сеанс, а предыдущий, даже при простом обрыве связи будет убиваться.

    Vnc вам в помощь. А чтобы вам не тратить время и не искать - берите turbovnc (как сервер, так и клиент), всё летает, а альтернатив и нет по сути у turbovnc, остальные тормозят. Держу на нём несколько виртуальных рабочих мест, даже с мобильного интернета да ещё и поверх vpn на не очень шустром роутере, подключение отличное, взаимодействие с рабочим столом без тормозов.

    Если нужна графика то turbovnc прекрасно работает с virtualgl. Но на практике для браузера и т.п (если не работаете с полноценными 3d приложениями), хватает и mesa за глаза.
    Ответ написан
    1 комментарий
  • Треск новой материнки

    @lemix85
    Есть схожая проблема на Gigabyte Z490UD
    Частично лечится отключение c-states в bios. Это снижает уровень треска в 2-3 раза, но не избавляет от него полностью.
    Ответ написан
    Комментировать
  • Найти имя файла в потоке gulp?

    @lemix85
    Я конечно могу ошибаться, но по-моему плагин concat требует имя итогового сохраняемого файла в котором будут объедены обрабатываемые файлы, а не имя текущего файла для объединения. Т.е. ответ - вы можете вписать туда любое удобное для вас имя, пробовали?
    Ответ написан
  • Где искать адекватных верстальщиков?

    @lemix85
    Нанимайте на почасовую, правильно организуйте учёт времени, чтобы следить за выполнением спокойно, беречь свои нервы и нервы разраба: раздробить задачи на мелкие и внятные (для технаря), фиксировать и обсуждать их в todo-менеджере, контролировать время в time-менеджере, например toggl.com. Если видите, что выходит дорого или плохо (или оба), расплачиваетесь по часам и выбираете нового разраба.
    Ответ написан
    5 комментариев
  • Как сделать что бы toggle не закрывал блок, если кликнуть внутри него?

    @lemix85
    Возможно, остановить всплытие события, но не понятно если не видеть ваш html-код

    $('#block').click(function(ev) {
         ev.stopPropagation();
    });
    $("#icon").click(function() {
        $('#block').fadeToggle(350);
    });
    Ответ написан
    5 комментариев
  • Как вывести переменную за пределы функции?

    @lemix85
    У вас ведь функция onResize назначена обработчиком события, вот внутри этой функции и выводите обновлённое значение переменной.
    function onResize() {
            heightOfSubMnu = $('body').width();
            consleLog();
    }


    а не после того как вы выполнили подписку на событие:

    $(window).resize(onResize);

    Событие изменения размера окна придёт позже, чем произойдёт вызов consleLog(); в конце кода.
    Читайте про асинхронное программирование, мне кажется вас именно это сбило с толку.
    Ответ написан
    Комментировать
  • Простым языком о замыканиях?

    @lemix85
    Я бы сказал так. Например, когда в теле функции используется переменная объявленная в вышестоящей функции, то переменная будет удерживаться до тех пор пока не отработает внутренняя функция - т.е. внутрення функция замкнёт на себя переменную.
    Например (setTimeout иллюстрирует любую асинхронную операцию):

    function func1() {
        var myVar1 = 100;
        setTimeout(function() {
             console.log(myVar);
        }, 1000); 
    }
    func1();


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

    Использовать можно, например, для создания колбэков с сохранением контекста:

    /// Некорректный вариант, выведет 3 3 3
    for(var i = 0; i < 3; i++) {
        setTimeout(function() { console.log(i) }, 1000); // Потому что на момент вызова колбэка цикл уже отработает и значение i будет максимальным
    }


    /// Выведет 0 1 2 т.к. текущее значение переменной i для каждой итерации передано аргументом в функцию в которой его замкнула другая функция
    for(var i = 0; i < 3; i++) {
        var cb = (function(value) { 
            return function() { console.log(value) };
        })(i);
        setTimeout(cb , 1000);
    }


    Последний код делает то, что сегодня уже можно сделать с помощью bind (но в моё время bind'а не было):
    for(var i = 0; i < 3; i++) {
        setTimeout(function() { console.log(this); }.bind(i) , 1000);
    }
    Ответ написан
    1 комментарий
  • Почему не работает скрипт проверка полей формы на заполненность?

    @lemix85
    Значение input получить забыли - val().
    function checkParams(){
        var email = $('input[name="email"]');
        if(email.val().length == 0) {
            alert("Поле пустое");
        }
      }
    Ответ написан