Задать вопрос
  • Не понимаю оператора return в JS?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Смотрите, как вызывать/использовать эту функцию.

    var a = getRectArea( 3, 4 );
    Тут в переменной a окажется значение, которое функция вернула – то, что после "return" в ней оказалось. В вашем примере это 3 * 4, т.е. число 12. Ура, в переменной a теперь лежит число 12

    И как только выполнился return – всё, дальше функция уже не выполняется, это был выход.
    function test() {
      return;
      alert('Привет мир!'); // эта строка никогда не выполнится
    }
    Ответ написан
    1 комментарий
  • Как добавить event listener?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Сам gtag не предусматривает, чтобы слушали события на нём. Поэтому надо прошерстить весь свой код и найти все вызовы gtag() с искомым событием. И там же дописать ваш alert()
    Или сделать свою прослойку для аналитики. На странице вызывать вместо gtag() свою функцию, например, mytag() которая, в свою очередь, станет вызывать gtag() и может, другие скрипты аналитики.

    Upd. в комментариях выяснилось, что ТС не может поменять вызовы к gtag() В таком случае остаётся заменить функцию gtag() на свою:
    function gtag(){
      dataLayer.push(arguments); // это весь исходный её функционал
    
      if (arguments.length > 1
        && typeof arguments[0] === 'string'
        && arguments[0].toLowerString() === 'event'
        && typeof arguments[1] === 'string'
        && arguments[1] === 'name1'
      )
      {
        alert("Name 1!");
      }
    }
    Ответ написан
    4 комментария
  • Как работает этот алгоритм?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Тут как бы длинный поезд из смайликов и короткая видимая платформа остановки. В середине видны какие-то средние вагоны, а левый край поезда, определяемый переменной position – где-то далеко слева, его не видно, а значение position отрицательное. Ноль соответствует точно левому краю, началу видимой «платформы».

    Когда жмут prev – толпа смайликов едет вправо, её position увеличивается. Но при этом последний вагон не должен уехать правее левого края платформы. Поэтому position (обычно отрицательный) делается равным наибольшему из двух: 0 или вычисленному значению. Если «уехали», position получился положительным. И Math.min(0, position) станет равным 0.

    Та же механика с правым краем и движением «поезда» справа налево. Нельзя, чтобы правый вагон поезда уехал левее правого края платформы. Нельзя, чтобы показались пустые рельсы. Поэтому position не должен становиться левее == меньше, чем минус-длина поезда плюс длина платформы.
    Ответ написан
    3 комментария
  • Как заменить "к" на 000?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Ошибка где-то ещё:
    $str = 'тест кк';
    echo str_replace("к","000",$str);  
    
    // тест 000000
    Ответ написан
    Комментировать
  • Как делать пошаговые действия?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Поскольку всё в рамках одного домена/сайта, ограничения Same Origin Policy не помешают.

    Каждая открываемая страница – это новое свежее выполнение скрипта. Поэтому между переходами надо как-то сохранять «состояние» — например, в куках или LocalStorage. В некоторых настройках ни одно из этих хранилищ может оказаться недоступным – например, в зашоренном Tor-браузере.

    С использованием LocalStorage можно примерно так:
    const KEY_STATUS = 'status'; // ключ сохраняемого параметра
    const step = +localStorage.getItem(KEY_STATUS);
    
    /* 
      Шаги:
      0 - переход на /1
      1 - заполнение и клик (видимо, в переходом на новую страницу?)
      2 - переход на /2
    */
    if (0 === step) {
    
      document.location.href = "http://site.ru/1";
    
    } else if (1 === step) {
    
      document.getElementsByName("pw")[0].value = "test";
      document.getElementsByClassName("ur")[0].click();
    
    } else if (2 === step) {
      
      document.location.href = "http://site.ru/2";
    
    }
    
    localStorage.setItem(KEY_STATUS, 1 + step);
    Ответ написан
    7 комментариев
  • В какой программе лучше всего рисовать?

    персонажи для моделинга, города

    Blender

    дама

    Poser
    Ответ написан
  • Как реализовать облачное хранилище?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Для обучения я бы порекомендовал реализовать задуманное как прослойку между пользователем и Amazon S3 – их API становится стандартом де-факто и реализован ещё несколькими облачными провайдерами.
    Используйте амазоновский PHP SDK.

    Скорее всего, вы создадите bucket в котором корневые "папки" будут индивидуальны для каждого пользователя вашего сервиса. Под ними уже пользователи смогут создавать свои подпапки.

    Загрузку файлов придётся, вероятно, делать на ваш сервер, а оттуда уже отправлять на S3.
    Ответ написан
    Комментировать
  • Докеризация приложения?

    Философия докера размещать в одном контейнере один сервис.
    Например, отдельные контейнеры: MySQL, php-fpm, nginx. Как будто это коробки в локальной сети, видят друг друга. А во внешний мир торчит только порт 443 nginx.

    Для удобного управления многоконтейнерным приложением есть Docker Compose. В одном файле docker-compose.yml лаконично описываются все сервисы. Это короче, чем bash скрипт и «так правильно».

    Всё в одном контейнере с ubuntu —
    плохая практика

    Можно и все делать в одном контейнере. Но это мало чем отличается от просто vps. Так же приходится ставить доп. софт, обновления. И потом, чтобы переехать на другой сервер, тащить тяжёлый образ. И никак не масштабировать.
    Ответ написан
    8 комментариев
  • Математические вычисления с дробными числами?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    К счастью, у вас не банк с расчетом стаки по кредиту.

    Почему бы не считать все в копейках? Тогда все расчеты в целых.

    ..Пока маркетологи не захотят давать скидку в 1/3
    Ответ написан
    2 комментария
  • Как определить к какой форме принадлежит input?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Прикрутить бы VueJS, и сделать корзину реактивной: в любой из форм изменили число товара, везде так же изменилось.

    Костылинг мог бы быть с глобальным объектом, хранящим актуальную корзину. Любая из форм меняет значениеив нем. Сеттер значения эмитит событие, которе слушают все формы, чтобы обновить свои данные.
    Ответ написан
  • Как правильно подсчитать время, проведённое пользователем в онлайне (VK API)?

    sergiks
    @sergiks Куратор тега ВКонтакте
    ♬♬
    Ответ зависит от алгоритма, частоты ваших проверок и обновлений параметра last_seen на стороне ВКонтакте.

    Наверное, стоит на своём аккаунте провести ряд экспериментов, чтобы выяснить:
    1. как обновляется время last_seen (с какой точностью), если:
      • в моб. приложении проявлять активность - прокручивать, листать
      • в моб. приложении проявлять активность - ставить лайки
      • в моб. приложении не проявлять активность, но держать открытым на виду
      • в моб. приложении не проявлять активность, держать в фоне
      • те же 4 пункта, но на сайте ВК.
      • если серверное standalone приложение от имени пользователя выполнит запрос к API
      • если iFrame приложение от имени пользователя по таймауту выполнит запрос к АПИ, при этом сам пользователь никаких действий, даже движений мышкой, не предпримет – обновит ли это last_seen?

    2. как обновится время last_seen, если моб. приложение закрыть. И сразу же открыть снова, но ничего не делать в нём.


    Это поможет сделать выводы:
    1. как часто имеет смысл проверять для одного юзера параметр last_seen: раз в 15 минут, в 10, в 5, каждую минуту?
    2. и только тогда – как интерпретировать полученые данные – ваш исходный вопрос.
    Ответ написан
    3 комментария
  • Возможно ли средствами css3 нарисовать такое?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Не пробовал, но стоит попробовать CSS свойство clip-path
    clip-path: rectangle(...)
    или mask-image и генерируемый SVG.

    Каждое из изображений обрезать своей маской, позиционировать над белым фоном. Белые рамки - может, поверх положить SVG опять же и дать толщину линиям.
    Ответ написан
    Комментировать
  • Как объединить два объекта без затирания вложенных свойств?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Не полениться обходить каждое свойство, и если его значение это объект, то рекурсивно не полениться обходить...

    Простых-встроенных методов пока нет.

    Например, см. реализцию _.merge() в библиотеке lodash.
    Ответ написан
    Комментировать
  • Как укоротить данный код?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Я бы предложил удлиннить на два дополнительных знака равенства:
    const bool = residential.is_brick === 0 || residential.is_brick === null;
    Ответ написан
    Комментировать
  • Безопасно ли передавать пароль через ajax?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    По протоколу HTTPS безопасно. По HTTP — опасно.
    Ответ написан
  • Как лучше передавать большие коллекции данных из Laravel в Vue.js?

    Можно создать в коде страницы глобальную переменную или функцию, которая вернёт массив пользователей.

    users/show.blade.php
    <script>
      function getMyUsers() { return @json($arrayOfUsers); }
    </script>
    ...
    <script>
    const vm = new Vue({
      data: function() {
        return {
          users: getMyUsers(),
          counter: 0,
        };
      }
    });

    Причём так можно упаковать не всех, а, например, только первые 500 пользователей.
    И если станут листать/прокручивать, то динамически, доп. запросами, подгружать дальше.
    Ответ написан
    Комментировать
  • Как защитить приложение?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Обсуждение похожего вопроса на github Electron'а.

    Один из вариантов – написать на C++ собственный модуль для NodeJS, реализующий скрываемый функционал.

    В вопросе не описано, как работает приложение: полностью автономно или клиент-сервер. Необходимость общения с сервером значительно упростила бы контроль оплаты.

    Для автономного моё предложение: регулярно обновлять приложение, улучшая его с каждым релизом. При автообновлениях проверять статус подписки. Так «хакеры» лишились бы свежих версий.
    Ответ написан
    1 комментарий
  • Где можно сделать подобную визуализацию данных?

    В D3js, см. пример
    Ответ написан
    Комментировать
  • Почему random не работает?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    1.
    var x = [Math.floor(Math.random()*10)];
    // заменить на
    var x = Math.floor(Math.random()*10);


    2.
    if(x=input){
    // заменить на
    if(x==input){
    Ответ написан
  • Как в Vue перемешать полученные данные axios?

    Полученный массив перемешать сразу при получении:
    // вместо
    vm.products = response.data.data  
    
    // так:
    vm.products = response.data.data.sort((a,b) => Math.random() - 0.5)
    Ответ написан
    3 комментария