Задать вопрос
  • Можно ли обойти CORS политику при отправке запроса на чужой домен?

    @Bob89991
    На домене alisanet.com должны быть прописаны разрешения для кроссдоменных запросов
    Ответ написан
    Комментировать
  • Как делается Preflight запрос?

    REZ1DENT3
    @REZ1DENT3
    web-developer
    Preflight запрос делает браузер автоматически, вам об этом заботиться не нужно.
    https://developer.mozilla.org/en-US/docs/Glossary/...

    A preflight request is automatically issued by a browser and in normal cases, front-end developers don't need to craft such requests themselves. It appears when request is qualified as "to be preflighted" and omitted for simple requests.
    Ответ написан
  • Правильно ли использован requestAnimationFrame?

    AlexandrVV86
    @AlexandrVV86 Автор вопроса
    Хотелось бы подытожить:
    Была проблема с кодом:
    //где-то выше
    el.style.transform = 'translateX(-100%)';
    //где-то ниже
    el.style.transform = '';
    el.style.transition = '10s';
    el.style.transform = 'translateY(100%)';

    Проблема заключалось в том, что transition применялось, еще до (может во время сброса первой трансформации). Поэтому блок двигался не буквой "Г", а по диагонали.

    Евгений скинул видео: Джейк Арчибальд в котором, демонстрируется, решение данной проблемы. Пока я дошел до нужной секунды, читая титры и вникая, я уже сам нашел придумал решение - и оно заработало, но не был уверен в его правильности, так возник этот вопрос. В это время предложил еще варианты решений Сергей Соколов.

    И так публикую 4 решения:
    1, 2 Джейк Арчибальд:
    1. requestAnimationFrame
    requestAnimationFrame(()=>{
    		requestAnimationFrame(()=>{
    			el.style.transition = '10s';
      		el.style.transform = 'translateY(100%)';
      })
    })

    2. Просим браузер посчитать стили для элемента:
    el.style.transform = '';
    getComputedStyle(el).transform;
    el.style.transition = '10s';
    el.style.transform = 'translateY(100%)';


    3, 4 Сергей Соколов
    3. тоже что 2
    el.style.transform = '';
    void el.offsetWidth;
    el.style.transition = '10s';
    el.style.transform = 'translateY(100%)';

    4. Добавление css анимации:
    .animate-go1 {
      animation-duration: 4s;
      animation-name: go1;
    }
    
    @keyframes go1 {
      from {
        transform: translateX(-100%);
      }
    
      0.5% {
        transform: translateX(0%);
      }
    
      to {
        transform: translateY(100%);
      }
    }


    const className = 'animate-go1';
      el.classList.remove(className);
      el.classList.add(className);


    5. Вариант самый короткий, автор Александр:
    el.style.transform = 'translate(-100%, 0)';
    
    c.onclick = function() {
        el.style.transition = '10s';
        el.style.transform = 'translate(0, 100%)';
    }

    Всех благодарю за участие
    Ответ написан
    Комментировать
  • Идея для школьного проекта?

    fomenkogregory
    @fomenkogregory
    Юниор софтварный инженер
    Сайт знакомств со школьницами
    Ответ написан
    1 комментарий
  • Почему не срабатывает clearInterval внутри функции?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Вы при каждом клике создаёте новый интервал, теряя ссылку на старый. На десятый клик вы чистите девятый интервал, первые восемь остаются работать.
    Ответ написан
    Комментировать
  • Почему свойство length начинает считать с единицы, а не с нуля, если в массиве счет начинается с нуля?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Как раз с длиной всё очевидно. length – количество элементов массива:
    []; // сколько элементов? – 0
    ['a']; // сколько элементов: 1
    ['a', 'b', 'c']  // 3

    Индексы начинают с нуля, потому, что индекс – это смещение.
    Исторически, с низкоуровневых языков программирования.
    В памяти под массив выделена некоторая память, начиная с адреса X.
    Последовательно находятся ячейки одинаковой длины. Чтобы найти, где лежит значение i-го элемента, к адресу X прибавляют i * size байт. Самый первый элемент начинается сразу с адреса X. Его индекс 0.

    Так же и со строкой в JavaScript: к буквам можно обращаться по индексу, как к элементам массива.
    "abcd"[1] // "b"
    "abcd"[3] // "d"
    Представьте, что в начале строки стоит курсор. Курсор возвращает букву перед которой стоит. Индекс – на сколько вправо надо этот курсор подвинуть.

    Эта особенность index / length общепринята во многих языках программирования. Так же, как для интервалов часто принято включать начало и исключать конец: [a; b) – например, в методе массива slice(), который вырезает кусок массива, если указать slice(1, 5) — вытащит элементы с индексами 1, 2, 3, 4 – включая 1-й, но не доходя до 5.
    Ответ написан
    Комментировать
  • На каком языке программирования написаны сайты в TOR’e?

    planc
    @planc

    на каком языке программирования пишут сайты в Торе

    на любом

    почему все сайты такие простые!

    нет менеджеров, которые говорят, что нам нужны дельфины рыгающие радугой
    Ответ написан
    3 комментария
  • Как поместить пинг пользователя в embed?

    @Azperin
    Дилетант
    В ембед ник вставляется через ИД <@!${user.id}>, но уведомление не придет, так как они в эмбеде запрещены

    Я с хука так посылал
    Hook.send('<@!477815449195642891>', {
    	embeds: [
    		{ 
    			color: '#fc0303',
    			title: `Some title`,
    			description: `Some description`,
    			url: `http://some.url/`,
    			thumbnail: {
    				url: `http://right-image-preview.com/1.png`,
    			},
    			image: {
    				url: `http://full-image.com/2.png`,
    			},
    			fields: [
    				{
    					name: `Field 1`,
    					value: `Field 1 text`,
    					inline: true,
    				},
    				{
    					name: `Field 2`,
    					value: `Field 2 text`,
    					inline: true,
    				},
    			]
    		},
    	],
    }).then(m => '').catch((e) => '');

    Тоесть он сначала упоминает юзера с ИД 477815449195642891, а ниже эмбед. Не знаю работает ли еще так.
    Ответ написан
    Комментировать
  • Как записать аналог из PHP в JavaScript?

    E1ON
    @E1ON Куратор тега JavaScript
    Vocaloid lover
    firstArr.map(({ text }) => secondArr.push(text));
    Ответ написан
    3 комментария
  • Почему падает mysqld?

    @Absolute138 Автор вопроса
    Не буду называть хостера...
    Vitaly Karasik оказался прав.
    Далее переписка с саппортом:
    Здравствуйте! В районе 4 утра упал mysqld.
    IP сервера: XXX.XXX.XXX.XXX
    Мой лог mysql по ссылке: http://*.ru/error.log_8.1.gz
    Все рекомендуют проверить работу железа.
    Похожая проблема на форуме MySQL:
    https://forums.mysql.com/read.php?22,620521,620521...
    https://bugs.mysql.com/bug.php?id=74824

    После падения mysql поднялась и сейчас работает без критических ошибок в логах. Уточните, имеются ли на моем сервере проблемы с оборудованием/драйверами? И с чем может быть связано данное падение?

    Ответ хостера:
    Здравствуйте!

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

    И не уведомления, ни черта не было. Такое отношение((
    Ответ написан
    4 комментария
  • Как избавиться от заиканий Астериск?

    @d-stream
    Готовые решения - не подаю, но...
    Собственно достаточно предсказуемая беда с доставкой пакетов через каналы общего пользования с негарантированной доставкой/задержкой.
    Типичная ситуация: толпа народа с web-броузингом, астериски и т.п. Юзер болтает по телефону и открывает страничку с кучей фоток -> броузер в кучу потоков начинает тащить картинки. Канал провайдера - не резиновый и в какой-то момент переполняется - пакеты встают в очередь и ждут... Для подгрузки картинок это максимум чуть притормозит отображение фотки котика, для голоса - произойдет заикание.

    Методы частичного устранения такой проблемы существуют:
    - можно зарезервировать часть полосы под голос
    - можно как минимум в рамках до своего шлюза включительно приоретизировать трафик
    - использовать отдельный канал/шлюз/сеть для телефонии

    Гораздо проблемнее устранять сходные заторы на стороне провайдера. Ну а гарантированные потоки (те же E1) нынче дороги...
    Ответ написан
    7 комментариев
  • Почему проект не работает на Heroku?

    @SaXXuM
    Нужно указать порт сервера через process.env.PORT
    Ответ написан
    Комментировать
  • Как правильнее задавать классы по BEM?

    Realetive
    @Realetive
    MODX Ambassador России, самозванный БЭМ-евангелист
    Оба варианта корректны.
    Ответ написан
    Комментировать
  • Какой node js фреймворк выбрать?

    bingo347
    @bingo347 Куратор тега Node.js
    Crazy on performance...
    Если прямо модно и мейнстримно, то NestJS, но он сильно завязан на TypeScript (что несомненно плюс) и декораторах (которые нестандартные, а значит, ИМХО, жирнючий минус)
    Помимо вот такого серьезного фреймворка есть микрофреймворки и библиотеки под конкретные задачи:
    Например для создания HTTP серверов есть express, он самый популярный, он под капотом у NestJS, но при не очень грамотном построении приложения легко убить производительность (тут совет использовать его роутер с первых дней)
    В качестве хороших альтернатив есть Koa и Hapi.
    Под websocket обычно все используют socket.io, из плюсов помимо популярности - его протокол реализован на многих языках, как в качестве сервера, так и клиента. В остальном, ИМХО, только минусы.
    В качестве альтернативы есть ws-api, но популярность низкая, typescript версия пока под альфой, и все не доходят руки доделать
    Ответ написан
    Комментировать
  • Конект js и php файла?

    Fragster
    @Fragster
    помогло? отметь решением!
    в пхп прямо в текст сгенеренной страницы вставить тег script с js, который устанавливает глобальную переменную (например window.my_app_page_count), в js скрипте эту переменную использовать по назначению.
    Ответ написан
    Комментировать
  • Как подключить зависимый репозиторий с указанием конкретного коммита в Git?

    gbg
    @gbg
    Любые ответы на любые вопросы
    но ни subtree ни submodules не могут ссылаться на конкретную сборку.

    Вот тут неверное утверждение. Хэш сборки записывается в дерево коммитов родительского репозитария, его можно увидеть
    git submodule status
    Ответ написан
    7 комментариев
  • Why WBK is not defined?

    tokmaganbet
    @tokmaganbet Автор вопроса
    Тех. поддержка помогла!

    6038f80d85497489544743.png

    Инструкция для интеграции с помощью функции sendCRMLead.
    Для отправки заявки с сайта в CRM необходимо вызвать функцию sendCrmLead.
    Вы можете самостоятельно интегрировать эту функцию на сайт или обратиться к нам. Для того, чтобы написать или позвонить нам, нажмите на кнопку “Поддержка” в левом нижнем углу кабинета.
    Если решите интегрировать самостоятельно или с помощью своего программиста, то вам поможет описание параметров:
    name - имя клиента, данные из этого параметра попадают в поле имя в карточке лида;
    email - электронная почта клиента, данные из этого параметра попадают в поле email в карточке лида;
    phone - телефон клиента, данные из этого параметра попадают в поле телефон в карточке лида. Форматировать телефон не обязательно мы сами приведём его к нужному формату;
    comment - примечание, данные из этого параметра попадают в поле примечание в карточке лида;

    Описание и пример скрипта

    sendCrmLead – Функция отправки заявок в CRM.
    name, phone, email, comment – Переменные в которых хранятся данные.
    Число 9701 – Это ID Вашей CRM.

    При отправке данных в CRM есть 4 системных поля – name, phone, email, comment.
    Также есть кастомные поля которые отправляются с помощью параметра –'values_custom': [{input_id: 67912, value: count}], где count – переменная, а число 67912 – id поля в CRM.

    Для того, чтобы корректно настроить интеграцию, Вам необходимо объявить переменные, где будут храниться данные с полей. К примеру, это должно выглядеть так:


    'inbox_type_id': 340653 – Тип входящего обращения для заявок.
    Для назначения ответственным сотрудника, необходимо передавать параметр - 'employee_id'
    Для назначения ответственным отдел, необходимо передавать параметр - 'department_id'

    Разберём срабатывание скрипта и переменную name. При нажатии на кнопку в форме на сайте [type="submit"] срабатывает событие click и выполняется функция, где по this в этой форме скрипт ищет идентификатор поля [name="name"] и записывает из него данные в переменную name.

    Для того чтобы в коде не возникало ошибок прописываем WBK !== 'undefined', это означает, что без кода наших виджетов эта функция не будет выполнена.
    Также делаем условие &&, что phone !== '' телефон не может быть пустой строкой, это предотвращает отправку пустых заявок с форм.

    При выполнении всех условий без ошибок, будет совершена отправка заявки в CRM.

    Все необходимые id полей и других параметров из CRM можно узнать открыв инструмент разработчика в браузере F12 (Google Chrome) и открыв в нём вкладку Network. При сохранении или изменении нужного Вам параметра будет сохранён лог с id в Preview выбранного лога.


    Для того чтобы узнать идентификаторы полей и т.д. в Вашей форме на сайте, необходимо инспектировать необходимый Вам элемент, это делается с помощью инструмента разработчика в браузере.
    Проинспектируем элемент поля 'name':

    Как видно, что идентификатор данного поля это: [name="name"] или [id="name"]
    Важно!!! Без кода виджетов из личного кабинета интеграция работать не будет.

    Интеграцию CRM с сайтом можно настроить с помощью API, ссылка на документацию: - https://goo.gl/G7FK5u
    Ответ написан
    Комментировать