Задать вопрос
  • Как установить меняющееся время задачи?

    После выполнения процесса запускать команду at, которая запустит процесс снова через 61 минуту (с запасом). Примерно так:
    at -f commands.sh now + 61 minutes
    Ответ написан
    Комментировать
  • Как реализовать древовидную структуру?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Может, в svg это реализовать? С помощью библиотеки d3js, статично или даже интерактивно например и например.
    Ответ написан
    6 комментариев
  • Подписан ли человек на такую группу и оставлял ли он там фотографии?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Метод users.getSubscriptions() возвращает подписки юзера. Если user_id не указывать, вернёт ваши подписки. Вот такой нехитрый код в процедуре execute() (прямо на той странице его вставьте и «Выполните») вернёт два массива: ваши и его id групп:
    var uid=12345; 
    return {
      "my": API.users.getSubscriptions().groups.items,
      "her": API.users.getSubscriptions({"user_id":uid}).groups.items
    };

    В первой строке задаётся id "того юзера", с кем сравнивать.

    Эти два массива остаётся сопоставить. Можно в скретч-паде браузера выполнить следующий код:
    var r = 
    {"response":.....} // тут целиком ответ из метода execute
    ;                  // и точка-с-запятой в конце.
    var common = [];   // сюда попадут id общих групп
    for(var i=0;i<r.response.my.length;i++){
      if( !!~r.response.her.indexOf( r.response.my[i])) 
        common.push(r.response.my[i]);
    }
    common;   // если в Scratchpad Firefox'а нажать Ctrl+L, 
              // код выполнится а в коммент вставится содержание этого массива


    Постил ли фотографии – надо просмотреть всю фото методом photos.getAll(). Параметр owner_id – по очереди, каждой из общих групп. У каждой фотографии смотреть значение поля user_id – нужны только те, где оно равно искомому юзеру.

    За один вызов метода можно получить до 200 фотографий, поэтому добавляем параметр count=200 и параметром offset листаем по 200 снимков вглубь истории. Можно опять методом execute зарядить сбор – так будет по 25*200 = 5000 фото за один вызов.
    Ответ написан
    Комментировать
  • Как удалить все записи на стене ВК?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Зайти на страницу документации по методу execute, в поле для кода вставить:
    var id, out = {"n":0, "post_ids":[] }, ids = API.wall.get({"count":24}).items@.id;
    out.post_ids = ids;
    while(id = ids.pop()) {
       API.wall.delete({"post_id":id});
       out.n = out.n + 1;
    }
    return out;
    Переход по ссылке выше сразу впишет этот код в нужное поле – останется его «Выполнить». Будьте осторожны – это действительно сотрёт посты с вашей стены!

    Этот код удалит 24 поста со стены и вернёт массив id этих (уже удалённых) постов текущего пользователя. Если постов больше – надо ещё и ещё выполнять этот же код.

    c38b7b5efb744d81ab5b825dc7fef3c0.png

    Если захотите восстановить удалённые посты – на это есть около 5 часов с момента удаления. Примерный код для восстановления удалённых постов:
    var id, n=0, posts = [2,3,4,6,8];
    while( id=posts.pop()) n = n + API.wall.restore({"post_id":id});
    return n;

    Тут в квадратных скобочках надо вставить id постов, полученные при их удалении.
    Ответ написан
    Комментировать
  • Много ли ресурсов требуется echo?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Не сильно.

    «Цена» вывода данных через echo для сервера ничтожна, по сравнению с тяжестью передачи лишних данных по сети от сервера в браузер.

    Если хотите оптимизировать, передавайте с сервера только данные про товары в удобном для JS формате, напр. JSON. А JS в браузере уже пусть их форматирует и отрисовывает как там выберет клиент – таблицей или списком. Всё, что расчитывается в браузере – уже не вашего сервера работа, вы за неё «не платите».
    Ответ написан
    Комментировать
  • Как собрать массив параметров GET через запятую?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Можно не отправлять форму, а перехватить событие отправки и переформатировать данные по-своему:

    $( "form" ).on( "submit", function( event ) {
      event.preventDefault();
      var tags=[];
      $('input:checkbox:checked',this).each((i,e)=>{tags.push(e.value)});
      var params = "tags=" + tags.join(',');  // "tags=1,2,3" если все три выбраны
      // дальше либо перенаправляйте браузер window.location=... либо ajax'ом отправляйте данные
    });


    Fiddle.
    Ответ написан
  • Алгоритм превращения одноуровневого списка в двухуровневый?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Надо двигаться по значениям, по одному, запоминая текущий «класс» значения. При смене создавать новый подмассив, в который пихать очередное значение.

    Рабочий пример:

    // классификатор – возвращает название класса
    // к которому относится переданное значение
    // неважно, как называть классы, лишь бы по-разному
    function classify(i) {
    	if(  typeof i === "number") return "my_number";
    	return "my_string";  
    }
    
    // группирует в подмассивы идущие подряд
    // значения одного класса
    function group(a) {
      var i, item, c={prev:null, curr:null}, result=[], to;
      
      for(i=0; i<a.length; i++) {
        item = a[i];
        c.curr = classify(item);
        if(!c.prev || c.prev !== c.curr) {
          c.prev = c.curr;
          result.push([]);
          to = result[result.length-1];
        }
        to.push(item);
      }
      return result;
    }
    Ответ написан
    Комментировать
  • Как правильно написать JQuery (javascript) плагин?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Ответ написан
    Комментировать
  • Как реализовать нейронную сеть для распознавания символов?

    Для начала проще всего реализовать что-то, разобравшись с готовой библиотекой. Например, ConvNetJS.

    Вот пример распознавания символов MNIST на JS.
    Ответ написан
    Комментировать
  • Как можно получить максимум от сети платежных терминалов?

    По поводу технических способов ничего не приходит в голову. Давать к терминалам широкий публичный доступ (сделать хостинг сайтов, поднять VPN или прокси) слишком рискованно для безопасности самих терминалов. Для организации DDOS атак нужен широкий канал, который вряд ли доступен терминалам. Вряд ли в терминалах установлены GPU Cuda. Проводить лотереи, наверное, тоже не получится и нужна зверская лицензия.

    Можно ли расширить их функционал для потребителя? Продавать криптовалюты. Позволить купить то же, что люди покупают обычно в местах их установки (сигареты, продукты) дешевле, чем в этом месте. Запартнёриться с какой-то локальной программой лояльности / скидок. Дать возможность людям заработать или сэкономить. Дать возможность школьникам заработать карманные деньги на доставке продуктов из магазина пенсионерам домой. Терминал тут сможет выполнять роль биржи заказов и печати купонов-чеков.
    Ответ написан
    Комментировать
  • Как использовать значения объекта javascript в php?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Попробуйте так:
    $data = json_decode( $_POST['data']);
    $data->price; // 6230
    $data->name; // 1111
    Ответ написан
  • Можно ли 3d модельку, сделанную в 3dMax, поместить на сайт?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Если не охота разбираться, может, просто делать зацикленный рендер модели, выведенный как анимированный GIF? Дёшево и сердито )
    Ответ написан
    1 комментарий
  • PHP как убрать последнее слово?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Из строки делаем массив слов, разбивая по плюсу. Выкидываем последнее слово из массива. Составляем ссылку, склеивая массив через плюсы и через пробелы:
    $str = 'prosto+tyt+slova+raznie'; 
    $words = explode('+', $str); //  массив слов
    if( count( $words) > 1) {
        array_pop($words); // выкидываем последнее слово, если их больше 1
        printf( '<a href="#%s">%s</a>', implode('+', $words), implode(' ', $words));
    }
    Ответ написан
    Комментировать
  • Как при клике переносить значение в другой div?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Аналогичный вопрос и ответ:

    var tags = [
        "Value 0",
        "Value 1",
        "Value 2",
        "Value 3",  
      ]
      ,selected = []
      ,$in = $('#workDesignTags')
    ;
    
    render();
    $("#workDesignLabels input").on("change", clickHandle);
    
    function render() {
      var i, v, items=[];
      for(i=0;i<tags.length; i++) {
        v = tags[i];
        items.push( $('<label>').append( $('<input>', {
            type:"checkbox",
            name:"design",
            value: i,
          })).append( v)
        );
      };
      $('#workDesignLabels').append(items);
    }
    
    function clickHandle() {
      var i, k = $(this).val(), result = [];
      if( !!~(i = selected.indexOf(k))) {
        selected.splice( i, 1);
      } else {
        selected.push(k);
      }
      for(i=0;i<selected.length;i++) result.push( tags[ selected[i]]);
      $in.val( result.join(', '));
    };


    HTML:

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="formRow labelBox col3 dropDownMobile" id="workDesign">
      <input type="text" name="tags" id="workDesignTags">
      <div id="workDesignLabels"></div>
    </div>
    Ответ написан
    4 комментария
  • Функция фильтрации массива в диапазоне?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    i-- затем, чтобы, удалив только что какой-то элемент вне диапазона, «текущий» элемент указывал на следующий.

    Например, i=2, текущий элемент arr[2] это 8, вне диапазона. arr.splice(2,1) удалит этот элемент. Теперь на месте arr[2] оказывается уже 1.

    Если не сделать i--, следующее значение i в итерации цикла будет уже 3, а arr[3] это 12 – выходит, "1" пропустили и даже не рассматривали.
    Ответ написан
    2 комментария
  • Как ограничить частоту запросов к бэкэнду?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Выдавать и проверять токен. При первой загрузке страницы выдаётся уникальный токен, с которым может быть выполнен первый запрос к апи. В ответ на первый запрос с токеном отдаются данные и токен для следующего запроса – только с ним, и не раньше X секунд можно получить данные. И так далее.

    Разумеется, хранить токены в in-memory хранилище (Redis, Memcached, APC). Продумать вариант с потерей связи и перезапросом со старым токеном (кэшировать данные на N секунд). Запрос со следующим токеном стирает из кэша предыдущий и его данные.
    Ответ написан
    Комментировать
  • Какой есть алгоритм вывода средств с банкомата?

    sergiks
    @sergiks Куратор тега Алгоритмы
    ♬♬
    Приоритет алгоритма – стараться выровнять кол-во остающихся купюр.

    Надо посчитать разброс количеств номиналов после выдачи, и выбрать вариант, после которого этот разброс минимален среди всех вариантов. Под словом «разброс» понимать среднее квадратичное отклонение.

    Когда каких-то купюр не осталось, надо показывать предупреждение, что «Банкомат выдаёт купюры достоинством X и Y», и если запрошенная сумма не составляется имеющимся набором, предлагать ближайшую больше, и ближайшую меньше, которые выдать может.
    Ответ написан
  • Что имеет в виду клиент, что нужно сделать и законно ли это?

    1. скорее всего, это нарушение прав владельцев оригинального сайта, но ответственность будет заказчиков/владельцев, а не вас, исполнителя. Сохраняйте переписку, на всякий случай : )
    2. "to rip smth" – что-то «передрать», скопировать, скопипи*дить. «Я планирую использовать этот пи**еный сайт для..»
    Ответ написан
  • Как полностью очистить Application Cache через javascript?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Мозилла рекомендуют обновить manifest-файл, и вызвать метод window.applicationCache.swapCache() – но он не обновит уже загруженные в приложение файлы. Поэтому после этого хорошо бы перезагрузить и страницу.

    p.s. вообще AppCache ведь deprecated, не стоит его использовать. Вместо него – Service Workers.
    Ответ написан
    Комментировать
  • Можно ли узнать информацию о добавляемом на сервер аудиофайле?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Если эта информация прописана в id3 теге mp3 файла, то можно. Например, ffmpeg или его утилита ffprobe умеют читать эти данные из mp3 файла:
    ffprobe -v quiet -print_format json  -show_format  music.mp3

    Результат:
    {
        "format": {
            "filename": "music.mp3",
            "nb_streams": 2,
            "nb_programs": 0,
            "format_name": "mp3",
            "format_long_name": "MP2/3 (MPEG audio layer 2/3)",
            "start_time": "0.025056",
            "duration": "219.350204",
            "size": "7072585",
            "bit_rate": "257946",
            "probe_score": 51,
            "tags": {
                "title": "Rihanna - Work (Feat. Drake)(VipMusic.In)",
                "artist": "VipMusic.In",
                "album": "Rihanna - ANTi (2016) - VipMusic.In",
                "composer": "VipMusic.In",
                "copyright": "VipMusic.In",
                "publisher": "VipMusic.In",
                "genre": "[VipMusic.In]"
            }
        }
    }

    Имейте в виду, что могут загрузить Metallica, прописав в тегах файла, будто это Лепс.

    Ещё вариант – подключаться к api какого-то музыкального сервиса опознавания записи по звуку – напр. EchoNest вроде бы может принимать upload'ы и идентифицировать треки.
    Ответ написан
    Комментировать