Задать вопрос
  • Как отловить события и повесить console.log в таком примере javascript?

    copist
    @copist
    Empower people to give
    64ce825f6e638967111057.png

    Воспроизводится автоматически как только объекту Audio присваивается src
    Ответ написан
  • Как передать referrer своему же поддомену?

    copist
    @copist
    Empower people to give
    Средствами клиенского скрипта можно. Например, на странице site.ru с помощью Javascript извлечь Referer из HTTP и при обращении к demo.site.ru подставить в другой HTTP заголовок, например в X-Referrer

    var referrer = document.referrer;
    $.ajax({ // jQuery
        url: 'http://demo.site.ru/foo/bar',
        headers: { 'X-Referrer': referrer  }
    });


    Для этого не обязательно все скрипты менять. Правила можно настроить в одном месте для всех запросов, которые делаются через jQuery
    Ответ написан
    Комментировать
  • Перенаправление на страницу оплаты после заполнения формы опроса?

    copist
    @copist
    Empower people to give
    Вроде бы есть такая штука "Thank you screen" - экран после заполнения формы. В нём пользователь должен будет сам нажать какую-нибудь ссылку вида "А теперь получить что-то". Если не нажмёт - значит не получит. Собирайте в форме email чтобы такую же точно ссылку ему потом отправить по электронной почте.

    Или запрограммируйте форму самостоятельно.
    Ответ написан
    Комментировать
  • Код HTTP ответа, для уведомления о смене пароля?

    copist
    @copist
    Empower people to give
    HTTP 200 OK
    А в ответе признак особой операции и текст "Требуется смена пароля"

    Или вот в википедии вот указано вне-регламентное использование кода 419
    419 Authentication Timeout (not in RFC 2616) — Этого кода нет в RFC 2616, используется в качестве альтернативы коду 401, которые прошли проверку подлинности, но лишены доступа к определенным ресурсам сервера. Обычно код отдается, если CSRF токен устарел или оказался некорректным.
    Ответ написан
  • Какие вы знаете способы выполнения тяжелых задач на node.js?

    copist
    @copist
    Empower people to give
    Использовать очередь заданий

    1. NodeJS принимает задание (HTTP POST запрос с параметрами), передаёт служебную информацию в очередь (Apache Kafka, RabbitMQ)
    2. Исполнитель извлекает задание, обрабатывает его, отправляет уведомление о завершении работы

    Передача уведомдений возможна так же через очередь
    Исполнитель для ресурсоёмких операций лучше делать на компилируемых языках, то есть C++, Erlang, GoLang
    Ответ написан
    Комментировать
  • Хранение информации в js переменных?

    copist
    @copist
    Empower people to give
    Ответ: браузер будет хранить данные до перегрузки страницы (Ctrl+R, F5), или навигации на другую страницу того же сайта, или навигации на другой сайт, или закрытии окна (вкладки).

    Хранить можно в переменных или в объектах JavaScript, в атрибутах элементов DOM, в localStorage, в куках и других местах браузера.
    Ответ написан
    Комментировать
  • Скрытая отправка формы, без следа в консоли?

    copist
    @copist
    Empower people to give
    1. Подавить контекстное меню мыши
    2. Перехватить нажатия клавиш, которые включают панель отладки
    3. Заменить объект, который реализует консоль
    4. Шифровать отправляемые и получаемые данные, причём код JS должен быть изощрённо обфусфированным, чтобы там нельзя было найти ключ или алгоритм шифрования (см. коды каких-нибудь вирусов - полиморфов)
    5. Использовать протокол websocket - там смотреть фреймы тупо неудобно
    6. Использовать HTTP прослойку на Flash или Java и там тоже шифровать

    Не забывайте, что кроме браузера обмен данными могут смотреть снифферы, например Wireshark. Кому надо, тот посмотрит.

    Я рекомендую изучить вопрос защиты данных, а не скрытия трафика.
    Не отдавайте клиенту лишнее, авторизуйте всех, проверяйте всегда кто что и зачем прислал, пользуйтесь токетами CSRF, заблокируйте кросс-доменные запросы, не выполняйте модифицирующие операции через GET запросы и так далее. Защищайте бэк.
    Ответ написан
    Комментировать
  • Как в postgresql хранить рабочие часы организации?

    copist
    @copist
    Empower people to give
    Хранение выбирается исходя из целей: расписание нужно только лишь показывать или по нему нужно искать.

    Если только показывать - то можно для любого расписания придумать замысловатую конструкцию в формате JSON, а можно текстом хранить, а можно и HTML.
    Если требуется искать, то нужно понимать - можно ли по этой структуре написать алгоритм поиска. Возможно будет эффективнее представить расписание как записи: в такой-то день недели с такого-то времени по такое-то время РАБОТАЕТ или наоборот НЕ РАБОТАЕТ

    CREATE table `workinghours` (
      `timefrom` unsigner integer COMMENT "Время начала", /*0 ... 2359 - перевод часов минут в целочисленный формат*/
      `timeto ` unsigner integer COMMENT "Время окончания", /* 0 ... 2359 */
      `weekday` unsigner integer COMMENT "День недели" /* { 1, 2, 3, 4, 5, 6, 7 } */
    );


    на случай, если расписание действует какой-то календарный период времени, необходимо ещё добавить пару свойств
    `datefrom` date COMMENT "Начало календарного периода",
    `dateto` date COMMENT "Окончание календарного периода",
    Ответ написан
    Комментировать
  • Как отключить кеш в мобильных браузерах?

    copist
    @copist
    Empower people to give
    Кэширование надо подавлять

    К URL каждого файла статики добавляй версию.

    Для разработки - версия должна меняться часто, я использую псевдорандомные строки типа 'app.js?v=' + Math.random()

    Для продуктовой сборки использую версию сборки из package.json, либо из файла конфига, либо код текущей ревизии, если приложение собирается из репозитория git. Последний вариант более точно определяет факт изменений.
    Ответ написан
    Комментировать
  • Как настроить разработку vue под java бэкенд?

    copist
    @copist
    Empower people to give
    По-умолчанию webpack отгружает приложение и всю статику с localhost:3000
    В настройках webpack надо указать другой базовый путь приложения.
    Пример https://github.com/pvolyntsev/toster-608800/blob/5...
    Ответ написан
    Комментировать
  • Как использовать два vue приложения на одной странице?

    copist
    @copist
    Empower people to give
    В модуле чата не используй роутер. Переключай представления (компоненты) без изменения URL.

    Что-то типа такого: в свойство component сохраняй код текущей видимой части приложения.
    <template>
       <app-dialog v-if="component === "dialog"></app-dialog>
       <app-settings v-if="component === "settings"></app-settings>
    </template>
    Ответ написан
    Комментировать
  • Как внедрить Vue в существующий Yii-проект?

    copist
    @copist
    Empower people to give
    Комментировать
  • Как внедрять vue в проект на Yii2?

    copist
    @copist
    Empower people to give
    Ты сборку на базе webpack используешь?

    В Yii2 надо будет сделать два layout: один для обычных страниц (view/layouts/main.php), второй для страниц с Vue (view/layouts/vue.php)

    Для режима dev в файле view/layouts/vue.php нужно подключать JS скрипты, которые генерит npm start. Для этого открой исходный код страницы, которую раздаёт webpack и скопируй оттуда все подключенные <script>. Либо вручную, либо парсер напиши. Вроде бы у этих скриптов статичные имена, поэтому тут проще. Можно один раз скопировать и забыть.

    Для режима prod нужно в лэйауте view/layouts/vue.php подключать финальные сжатые JS скрипты, которые генерит npm run build - тут сложность в том, что эти скрипты с уникальными именами всегда.

    Попробую сделать пример на github
    Ответ написан
    5 комментариев
  • Возможно ли восстановить source map созданный uglify?

    copist
    @copist
    Empower people to give
    source map нету

    Нет, восстановить исходный код без source map нельзя.

    Можно отформатировать это г****о, чтобы оступы появились и скобки были расставлены аккуратно, но останутся сокращённые переменные и каша в виде модулей. К тому же это будет написано на ванильном JavaScript, это приложение невозможно будет переиспользовать в React Angular Vue или чём-либо ещё, на чём оно было написано изначально. Ни строки кода нельзя будет скопипастить. Только глазами посмотреть.
    Ответ написан
  • Может кто простыми словами объяснить что такое SalesForce и его предназначение?

    copist
    @copist
    Empower people to give
    что такое SalesForce

    SalesForce относится к системам управления взаимоотношениями с клиентами (Customer Relationship Management, CRM, CRM-система).
    Если коротко, то это сервис для ведения базы данных клиентов (имена, контакты), ведения сделок (заказы, продажи, оплаты), документооборота (заявки, договора, квитанции). Обычно это многопользовательские системы. Обычно эти системы имеют интеграцию с другими системами для ведения email, sms и голосовых рассылок с напоминаниями о сделках или для рекламных целей. Обычно там есть возможность вести задачи, передавать их между сотрудниками, отслеживать исполнение, сроки. Обычно такие системы могут взаимодействовать с клиентами на базе автоматизированных скриптов, например регистрировать заказы с сайта или вести опросы по качеству обслуживания.

    его предназначение?

    Не держать всё в голове. Не вести учёт на бумажке. Не вести учёт в гугло-доках. Не терять клиентов и деньги. Вот его предназначение.

    Обычно системы CRM могут строить статистические и аналитические отчёты для определения удвлетворнности клиентов, эффективности работы сотрудников и состояние организации в целом. По этим отчётам можно определить рентабельность в целом и по направлениям, нехватку или избыток персонала, наиболее перспективные или тупиковые каналы привлечения клиентов, наиболее выгодные или невыгодные товары.

    Когда я говорю "обычно" - это значит что это возможно, но не обязательно присутствует в базовой версии.
    Дополнения к базовой версии подключаются либо программируются. SalesForce отличается тем, что для этой платформы можно дописать много чего. Она открытая для расширения силами программистов.

    А дописываются модули под конкретные бизнес-процессы организации. Например, в моей организации ведутся конференции по веб-технологиям. Нужно вести контакты с конференц-залами и контакты с слушателями. С первыми договориться о времени, заплатить. Со вторых взять оплату за участие и напомнить, чтобы не пропустили. А ещё вести онлайн блог и в личном кабинете после мероприятия дать возможность скачать видео-запись, задать вопрос, оставить отзыв. Это конкретно мои заморочки. Мне стало быть нужно базовый модуль + личный кабинет участника + онлайн оплаты + интеграцию с ККМ + задачник + рассылки по email/sms + блог.
    Ответ написан
    1 комментарий
  • Какую СРМ выбрать для учебного центра?

    copist
    @copist
    Empower people to give
    Комментировать
  • Как можно сделать такое при скролле?

    copist
    @copist
    Empower people to give
    Это может быть SVG с элементами-чекбоксами и белой линией, поверх которой отрисовывается жёлтая линия по вот такому сценарию: Scroll to draw



    Вот пример похожий: le-mugs.com (см раздел La Carte) в работе и пример на codepen https://codepen.io/proweb1991/pen/GNxYaR
    Ответ написан
    Комментировать
  • Как сделать валюту оплаты отличной от валюты сайта?

    copist
    @copist
    Empower people to give
    Прежде всего нужно определиться с платёжным агрегатором. Stripe Skrill PayPal 2Checkout Braintree и туча их ещё
    У каждого из них разные варианты оплаты
    Нужно смотреть описание API

    Обычно в запросе на проведение оплаты сумма задаётся в базовой валюте (USD например), а пользователю показывается селектор валюты, либо сразу отображается в местной валюте, либо показывается в USD, но в итоге с карты списывается в рублях

    Иногда цены "для запада/для России" отличаются значительно. Например, для России - 100 рублей за штуку, для Европы - 10 евро за штуку. Это реализуется в бизнес-логике твоего приложения, как Developer описал. В таблице хранятся цены, курсы.

    Иногда цены отличаются для новеньких и для бывших пользователей (дисконтная система). Иногда скидка реализовывается на стороне платёжного агрегатора (Stripe), а чаще - хранишь параметры у себя и выставляешь через API сумму с учётом скидки.
    Ответ написан