• Как сохранить клиента себе не в убыток?

    Согласитесь, с условием:

    1. оплата вперёд, 100%
    2. срок ровно полгода – фиксируйте дату последнего дня;
    3. вы будете считать время, потраченное на поддержку. Прозрачно, таймером как на upwork. Если оно превысит 80 часов вы прекращаете работу до получения ещё $100, которые покроют дополнительные 20 часов работы (цифры сами точно расчитайте)
    4. Дополнительное время, оплаченное дополнительно – это только дополнительные часы. Как только полгода истекут – вся работа прекращается до продления контракта.


    Т.е. фактически сведите договор к почасовой оплате, сохранив внешнюю форму предложения индуса.
    Ответ написан
    5 комментариев
  • Как скопировать с сервера 30 гб картинок в jpeg'e?

    sergiks
    @sergiks Куратор тега Веб-разработка
    ♬♬
    только rsync, только хардкор:

    rsync -avz lsd_user@oldLinuxServer:///var/www/pornosite/images /home/happynewadmin/funnyPics


    Ключи:
    • a – рекурсия в подпаки и попытается передать и атрибуты прав файлов и линки сохранить. Наверное, тоже необязательно – можно вместо него r – только рекурсия в подпапки.
    • v – будет подробно лить в консоль путь каждого скопированного файла. Наверное лучше убрать и вместо него q – вывод только ошибок/предупреждений;
    • z – будет пытаться жать файлы для передачи меньшего объёма. С jpeg'ами малоэффективно. Можно забить.
    Ответ написан
    3 комментария
  • Что делают значения в функции?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Прочитайте, пожалуйста, https://learn.javascript.ru/function-basics – обратите внимание на «локальные переменные».

    Попробую разложить по полочкам.

    var a = 1, b = 2; // эти a, b – «глобальные», выше всех, «видны» везде
    function calculate(x, y, z) {
      // здесь определены локальные переменные x, y, z
      // и видны все переменные из уровней выше
      // напр. a и b
      // ждём, что x – это будет функция
      return x( y+a, z+b); // можно использовать и локальные и глобальные
    }
    
    function sum( a, b){ // а вот тут a,b – переопределены локально
      // и к тем, глобальным a и b не имеют никакого отношения!
      return a+b; // складывает те a и b, что передали при очередном вызове sum()
    }
    
    calculate( sum, 5, 6); // вызывает calculate, и там будет x = sum, y=5, z=6
    sum( 7, 8);  // вызывает напрямую sum, внутри которого будет a=7 и b=8
    // при этом глобальные a и b никак не пострадают.
    Ответ написан
    Комментировать
  • Как сделать простановку пробелов с конца в моей регулярке?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Регуляркой:
    var n = 12345678;
    n = n.toString(10).replace(/(\d)(?=(\d{3})+$)/g, '$1 '); // 12 345 678


    Можно и без регулярок. Строку разбить в массив, развернуть, к каждому третьему символу приделать пробел (идём с конца, получается), собрать в строку:

    var n = 123456789;
    
    var a = n
      .toString(10)
      .split('').reverse()
      .map(function(e,i){ return (i%3 ? e : ""+e+" ")})
      .reverse()
      .join('')
      .trim()
    ;
    // a = "123 456 789"


    Disclaimer: некорректно может обработать знак минус!
    Ответ написан
    2 комментария
  • Как в середине функции узнать какой метод был вызван?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Предположу, что в примере вызова у вас опечатка, и вы хотели вызывать test.on() – со скобками.

    Обернуть в Proxy, но это не будет работать в старых браузерах и IE и вообще сомнительно, что именно это вам требуется. Может, пересмотреть весь код?
    var test=function(){  
      console.log("method:", arguments[0]);
    };
    
    var handler = {
      get: function( target, name) {
        var _method;
        if(name in target) {
          return target[name];
        } else {
          return target.bind( null, name); // если не определено свойство, передаем его 1-м аргументом
        }
      }
    };
    
    test = new Proxy( test, handler);
    
    test.on(); // method: on
    test.blabla(); // method: blabla
    test(); // method: undefined
    Ответ написан
    Комментировать
  • Возможно-ли удаление приложения VK через API?

    sergiks
    @sergiks Куратор тега ВКонтакте
    ♬♬
    Методов API для удаления/отключения ранее установленного приложения среди apps.*, account.* и Client API, вроде бы, нет.

    Подделать POST-запрос на https://vk.com/al_apps.php, который выполняется при удалении приложения в интерфейсе ВК тоже сложно – помимо act=quit,al=1,id=111111 там передаётся некий вычисляемый параметр hash.

    Можно предлагать пользователю самому перейти на страницу настроек приложений vk.com/settings?act=apps и там нажать крестик напротив вашего приложения.
    Ответ написан
    2 комментария
  • Где и Как познать четвертое измерение?

    Смотрели клип «Imagining the 10th dimension»? Там предлагают представить 4-е через движение трёхмерного пространства во времени, оставляя «след». Т.е. человек – это длинная колбаса в 4D, начинающаяся зародышем и заканчивая стариком. Но поскольку мы живём и воспринимаем лишь 3 измерения, то «видим» лишь какой-то текущий срез этой колбасы – себя сегодня.
    Ответ написан
    2 комментария
  • Что полезного вы бы соорудили из рамы 2х2х4м? Гигантский 3D Принтер?

    1. 3D сканер для людей в полный рост с изготовлением потом их фигурок маленького размера;
    2. камера для выращивания всякой растительности (шутка)
    Ответ написан
    4 комментария
  • Загрузка audio message vk api. Не проигрывает на моб версии?

    sergiks
    @sergiks Куратор тега ВКонтакте
    ♬♬
    Дело оказалось в формате аудио-файла, который отправляется как audio_message: он должен быть монофоническим, чтобы нормально воспроизводиться на мобильных клиентах.
    Ответ написан
    Комментировать
  • Как делается текст из частиц (particles)?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Можно такой текст отрисовать в SVG и дать атрибут stroke-dasharray, чтобы по периметру букв получился пунктир точками. Размножить слой и разнести по оси Z, чтобы получился небольшой объём.

    Более экспериментальный вариант, плохо поддерживаемый браузерами, CSS3 свойство text-stroke (-webkit-text-stroke). Смысл тот же – сделать обводку букв пунктиром и наделать копий слоя со смещением по Z.

    И, наконец, можно всё это отрисовать в canvas.
    Ответ написан
    Комментировать
  • Как из пути до файла получить имя файла без расширения?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    без регулярных выражений встроенной в PHP функцией pathinfo():
    $info = pathinfo('/doc2/Тестовый документ.pdf');
    echo $info['filename']; // Тестовый документ
    Ответ написан
    4 комментария
  • Почему цикл не повторяется?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    В вашем коде цикл while не содержит в «теле» ничего – после скобок сразу закрывается точка-с-запятой.

    Вот так вы, наверное, имели в виду:
    var answer;
    do {
      answer = prompt("Скажи 'стоп'", "");
      document.write("Ты сказал '" + answer + "'.");
    } while (answer !== "стоп");


    Есть два варианта while-цикла:
    1. while( условие) { действия }
    2. do{ действия } while( условие )
    В этой задаче точно нужен второй: сначала надо выполнить действия (попросить сказать «стоп»), а потом уже проверить условие (что ввел пользователь?).
    Ответ написан
    3 комментария
  • Как имитировать двойной клик?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Дабл-клик делается так: создать событие и отправить его через dispatchEvent():
    var event = new MouseEvent('dblclick', {
        'view': window,
        'bubbles': true,
        'cancelable': true
      });
    document.getElementById('button').dispatchEvent(event);

    Полагаю, в вопросе опечатка и вы имели в виду «имеется id #button».
    Ответ написан
    Комментировать
  • Как работать с методом groups.getMembers вконтакте с помощью JS?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Посмотрите мой открытый проект по сбору списка всех Участников сообщества. Только JavaScript. Демо.

    Реализация с web worker'ом и учётом времени выполнения запросов, чтобы не вылезти за лимит трёх запросов в секунду.
    Ответ написан
    Комментировать
  • Можно ли подключить бота к вк, чтобы он обрабатывал заявки от пользоватлей?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Создать бота, который сумеет общаться по четкому сценарию, и собеседник не будет испытывать иллюзий, что общается с живым человеком – можно.
    Ответ написан
    Комментировать
  • Как настроить функцию для передачи различных значений?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Внутри возвращаемой функции запоминайте значение:
    function nds( cost) {
      return function() {
        var _cost = cost;
        var result = _cost * 1.13;
        console.log( result.toFixed(2));
      }
    }


    Так возвращаемый экземпляр функции будет содержать в себе переданное значение.

    var a = nds(53);
    var b = nds(12);
    a(); // 59.89
    b(); // 13.56


    Upd. для общего счётчика придётся завести переменную, видимую из всех функций:
    var total = 0;
    
    function nds( cost) {
      return function() {
        var _cost = cost; // запомнили внутри цену
        var result = _cost * 1.13; // добавили НДС
        total += result; // добавили к общей сумме
        console.log( "result:", result.toFixed(2), "total:", total.toFixed(2));
      }
    }
    
    var a = nds(53);
    var b = nds(12);
    
    a(); // result: 59.89 total: 59.89
    b(); // result: 13.56 total: 73.45
    a(); // result: 59.89 total: 133.34
    a(); // result: 59.89 total: 193.23
    Ответ написан
    2 комментария
  • Как правильней будет фильтрация периода?

    sergiks
    @sergiks Куратор тега Веб-разработка
    ♬♬
    Это следует из бизнес-логики: что нужнее пользователю? Не уверены, спросите пользователей.

    Вопрос относится не только к неделям – ко всем периодам. Вариант 1 с привязкой к календарной сетке будет давать пилообразно нарастающие показатели, в зависимости от времени, когда запрошены данные. Вариант 2 будет давать среднее значение (running average) за выбранный период.

    И будьте тогда уж постоянны. «За сутки» – с 00 до 23:59 по часовому поясу пользователя, или за последние 24 часа с текущего момента. «За месяц» – за текущий месяц, обнуляя в начале каждого и нарастая к концу, или среднее значение за последние 31 день | календарный месяц до такого же числа предыдущего месяца? «За год» – за этот год (1-го января минимум, в декабре максимум) или до такой же даты прошлого года.

    Скажем, для оценки пользователем скорости расходования средств на счёте могут быть полезны оба варианта. Средний расход за последние 7 дней удобно сравнивать с расходом за пред-предыдущие 7 дней. А привязка к календарному месяцу поможет спрогнозировать сумму счёта к оплате на конец месяца, если списывание происходит 1-го числа.
    Ответ написан
    1 комментарий
  • Как Вы защищаете свои сайты на nginx?

    Мнение: пускайте траффик через CloudFlare – они умеют фильтровать часть угроз.

    Прочие угрозы и дыры в безопасности существуют на уровне PHP и движков и веб-сервером почти не фильтруются. Можно анализировать логи на типичные паттерны скажем, fail2ban'ом.
    Ответ написан
    Комментировать
  • Тематика курсовой работы?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    С уклоном в математику: задача поиска максимальной биклики в двудольном графе применительно к данным ВК. Взять любую аудиторию, например, подписчиков одной какой-то группы. Получить все группы, на которые они подписаны. Найти среди них наибольшую клику: т.е. тот набор групп, на которые подписан наибольший набор аккаунтов.
    Ответ написан
    Комментировать