Задать вопрос
  • Синхронный и асинхронный код, почему так называется?

    MarcusAurelius
    @MarcusAurelius
    автор Impress Application Server для Node.js
    А сам код синхронным не называется, это его по ошибке или для упрощения так называют. Синхронным и асинхронным называется только API ввода-вывода, т.е. операции, прерывающие исполнение кода и требующие от системы обратиться к внешнему устройству, работающему не синхронно с центральным процессором. Операции ввода-выдвода, каковые есть: работа с дисками, портами, контроллерами, периферийными устройствами, как клава, мыша, тачскрин, разные датчики, вебкамера, сетевые карты, блютузы и другие радиомодули, принтеры, видеокарты и прочее. Все они получают задание от программы, и исполняют его отдельно, своими мощностями. Потом внешние устройства присылают программе сигнал о статусе исполнения и, возможно, полученные данные. Программа все это время может ждать (если у нее синхронное API, т.е. блокирующее) или что-то делать (если асинхронное, т.е. не блокирующее). Если программа ждет, не переходит к выполнению следующего действия, то это синхронный ввод-вывод, потому, что осуществляется процесс синхронизации программы с внешним устройством. Внешне устройство посылает прерывание, которое обрабатывает операционная система и через несколько слоев драйверов оно попадает в программу, обычно в виде колбека или события. Если программа ждала, то вызов API не завершался, она все время слушала, когда придет событие о завершении операции ввода вывода, а получив его API отдает ответ и управление переходит к следующей команде, что и называется, синхронизацией с периферийным устройством. Если программа не ждала, то вызов API сразу завершается и не блокирует поток выполнения программ, это называется асинхронным API, потому, что процесс синхронизации не происходит явно, а ответы возвращаются через события.
    Ответ написан
    3 комментария
  • Как имитировать клик по элементу video?

    Vlatqa
    @Vlatqa Куратор тега HTML
    const video = document.getElementById('about-course')
      video.addEventListener("click", () => { 
            if (video.paused == true) {
                 video.play();
            }
            else{
                 video.pause();
            }
      });
      setTimeout(() => video.click(), 2000)

    примерно так
    Ответ написан
    4 комментария
  • Как имитировать клик по элементу video?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Решение зависит от того, чего именно вы хотите добиться. Браузеры не разрешают просто так начинать проигрывать видео со звуком без разрешения пользователя. Можно добавить <video/> атрибут autoplay, но к нему в паре обязательно ещё указывать muted. Ну а можно воспользоваться специальным API для проигрывания видео.
    Ответ написан
    5 комментариев
  • Для чего существует $_REQUEST?

    Stalker_RED
    @Stalker_RED
    Для начала, для чего существует POST.
    Представим, что у вас есть сайт example.com и на нем форма с кнопкой, удаляющаяя статью.
    На сервере вы, естественно, проверяете авторизован ли пользователь и есть ли у него права на удаление.

    При нажатии на кнопку через post передаются такие параметры
    article_id: 123
    action: delete

    Если на сервере вы будете получать эти данные при помощи $_REQUEST, то возможна ситуация, когда злоумышленник делает так:
    <img src="http://example.com?action=delete&article_id=1">
    <img src="http://example.com?action=delete&article_id=2">
    <img src="http://example.com?action=delete&article_id=3">
    <img src="http://example.com?action=delete&article_id=4">

    Публикует такие "картинки" вот прямо здесь, в комментариях на тостере.
    При этом ваш браузер конечно попытается эти картинки получить, и выполнит эти запросы с ВАШИМИ правами.

    В случае, если вы обращаетесь к $_POST - такой фокус не сработает. Кроме того, данные отправленные через POST не попадут в историю браузера и в логи той wi-fi точки или роутера, через которую вы сидите. URL попадет, а POST data - нет. В отличие от GET.

    А $_REQUEST существует для удобства. К примеру у вас есть форма поиска, которая может работать и через POST и через GET. Это удобно, когда пользователь может скопировать URL с поисковым запросом.
    Ответ написан
    Комментировать
  • Где лучше всего подключать js?

    fnnzzz
    @fnnzzz
    front-end dev
    подключают в основном в конце body, потому что важно сохранить последовательность загрузки и выполнения скриптов, например jquery, а потом какой-нибудь common.js, который юзает jquery.
    + в таком случае загрузка скриптов начнется уже в самом конце, когда пропарсился html.
    Т.е. допустим у вас в head есть скрипт, который весит ~10мб, но он defer и не критикал (тобишь его можно потом догрузить лениво), в таком случае он начнет сразу грузится, а парсинг хтмл продолжится дальше, далее у вас в хтмл встречаются другие картинки, медиа-файлы и т.д. - но если у вас слабое соединение, то весь канал будет съедаться этим скриптом.

    но в целом, если у вас стоит аттрибут - defer или async, то в принципе не важно куда вы подключите ваш script.

    вот схемка разных вариантов подключения скрипта:
    https://hospodarets.com/img/blog/14828583238612140...
    Ответ написан
    5 комментариев
  • Как сделать такую разметку?

    SilenceOfWinter
    @SilenceOfWinter
    та еще зажигалка...
    https://www.cssscript.com/masonry-gallery-layout/ ну или какой-то аналогичный скрипт галереи.
    Ответ написан
    Комментировать
  • Как сделать такую разметку?

    @rootnoroot
    разбейте на блоки left right и выводите
    или используйте срипты подобные этому
    Ответ написан
    Комментировать
  • Как сделать такую разметку?

    @wervan
    Можно сделать 2 разных дива и флекс колумн поставить ))))))))
    Ответ написан
    Комментировать
  • Как сделать такую разметку?

    grid, 2 колонки, чайлды внутри колонок стилями. Список по колонкам делить через js. Количество гридов из списка делить через js, исходя из дизайнерского набора по кол-ву. Изображения внутри через 100/100% и cover.
    Ответ написан
    2 комментария
  • Как написать отрицание в регулярном выражении?

    @dmpopof
    ваш вариант
    [^\/]+
    рекомендую regex101.com. Отличный онлайн тестер регулярок.
    Ответ написан
    Комментировать
  • Как удалить из строки точки, запятые, пробелы и символ %?

    0xD34F
    @0xD34F Куратор тега JavaScript
    str.replace(/[\s.,%]/g, '')
    Ответ написан
    Комментировать
  • Не получается удалить сообщение с помощью VK API, что делать?

    aeonixlegit
    @aeonixlegit
    Back-end разработчик на node.js
    Всё зависит от того, кем является необходииый Вам бот, если бот является группой и работает через
    добавление группы в чаты - то увы, ничего не поделать, API не хранит айди сообщений для групп, из-за чего со стороны групп нельзя удалить сообщения, единственный способ - это удалять сообщения от имени пользователя или удалять их вручную.

    Если же Вы используете бота со стороны страницы пользователя, то попробуйте законсолить то, что выдает API и рассуждать и устранять исходя из этого.

    Как я понимаю, в коде используется библиотека vk-io, следовательно адаптировал код под неё.

    const otherMessage = (await vk.api.messages.getByConversationMessageId({
      peer_id: 2000000000 + message.chatId,
      conversation_message_ids: message.conversationMessageId,
    })).items[0]
    
    console.log(otherMessage)
    
    await Promise.all([
      vk.api.messages.delete({
        message_ids: otherMessage.id,
        delete_for_all: 1,
      }),
      vk.api.messages.removeChatUser({
        chat_id: message.chatId,
        user_id: message.senderId,
      })
    ])
    
    return message_b(message.chatId, 'Отправка ссылок в этой беседе запрещена.')
    Ответ написан
    Комментировать
  • Как сделать правильное перенаправление с http на https?

    BuriK666
    @BuriK666
    Компьютерный псих
    RewriteCond %{HTTPS} !=on
    RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]
    в самое начало
    Ответ написан
    1 комментарий
  • Как изменить разделители для CSV в Excel?

    honor8
    @honor8
    Принципы быстродействия VBA в описании
    • Изменяется региональными настройками системы: Дополнительные параметры (кнопка) -> Числа (вкладка) -> Разделитель элементов списка. Блинк
    • Написать макрос для сохранения данных с разделителем запятой:
      Sub SaveAComma()
        ActiveWorkbook.SaveAs Filename:="C:\Users\User\Desktop\ActiveSheet.csv", _
          FileFormat:=xlCSV, CreateBackup:=False, Local:=False
      End Sub
    • Чтобы открыть файл c разделителем "запятая" - в первой строке CSV-файла написать sep=,
    Ответ написан
    4 комментария
  • Как реализовать ссылку с номер whatsapp на сайте?

    Добавлю новостей из 2к21 :)

    Вот такую ссылку можно вставить на сайт:
    https://api.whatsapp.com/send/?phone=79200000000
    или её короткий вариант:
    https://wa.me/79200000000

    Такая же ссылка, но с текстом:
    https://api.whatsapp.com/send/?phone=79200000000&text=Здравствуйте%2C+у+меня+есть+вопрос

    или короткий вариант:
    https://wa.me/79200000000?text=Здравствуйте%2C+у+меня+есть+вопрос

    .
    Но есть другой вариант - поставить на сайт виджет CHAT-BAR - это ссылки на мессенджеры, соц.сети и телефон, которые открываются прямо в приложениях на телефоне. Можно написать свой Call-to-action и поставить ссылку на Ватсап, Вайбер, Инстаграм, Ютуб и т.п. посмотрите здесь https://skobelkin.ru/
    Вот плюсы виджета:
    • Виджет бесплатный
    • Все ссылки открываются сразу в приложениях на Андроиде и iOS правильно
    • Конвертирует мобильный трафик в подписчиков
    • Позволяет быстро связаться с компанией по любым средствам связи

    ---------------------
    Есть конструкторы ссылок для Ватсап, выбирайте:
    https://cli.co/US-49CH
    https://cli.co/Hsi6gZv
    https://cli.co/hvBtrev
    Ответ написан
    1 комментарий
  • Как имитировать клик на jQuery/JS?

    sokollondon
    @sokollondon
    Клик по элементу
    $('.btn').click();

    Клик по ссылке (чтобы произошёл переход по ссылке)
    $('a')[0].click();

    Клик по элементу после задержки
    setTimeout(function(){
        $('.btn').click();
    }, 1000);
    Ответ написан
    1 комментарий
  • Как работает кэш Инстаграм?

    opium
    @opium
    Просто люблю качественно работать
    Это кеш браузера, отключите в настройках сервера кешировать статику
    Ответ написан
    2 комментария
  • Post и Get запросы, какая между ними разница и что лучше и для каких целей?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    Общего между ними то что они работают одинаково. Разницы между ними технически никакой. А вот идеологические различия есть.

    Я расскажу о них в контексте PHP. Прошу заметить что протокол HTTP к PHP имеет косвенное отношение потому что он создавался для обмена html страницами а PHP просто расширяет возможности и того и другого.

    GET запрос используется чтобы получить данные а POST чтобы отправить. (Напоминаю что технически они работают одинаково).

    Поэтому в контексте PHP опираясь на эту идеологию сделали следующим образом:
    1. При каждом запуске PHP по умолчанию создаются суперглобальные массивы ($_GET, $_POST).
    2. Если в строке запроса есть вопросительный знак(?). То все что после него считается параметрами GET запроса они представлены в формате 'ключ'='значение' и в качестве разделителя используется знак амперсанда (&)
    Пример:
    GET /index.php?name=Андрей&surname=Галкин
    это строка запроса, тут 2 параметра. эти параметры попадут в массив $_GET.
    3. $_POST заполняется другим способом. содержимое этого массива заполняется из "заголовков запроса". То есть из места, скрытого от глаз в явном виде. Всю рутину по созданию таких заголовков берет на себя браузер. Хотя иногда и что-то редактируется в заголовках в ручную.

    Чаще всего пост запрос используется в формах (для отправки данных).

    Например у нас есть форма для входа 2 поля логин и пароль.

    Представим что мы используем GET метод. Тогда при отправке формы мы перейдем на следующий адрес /login.php?login=Андрей&password=123 согласитесь что так передавать такую информацию совсем не безопасно. Любой может открыть ваш браузер и начиная вводить адрес сайта он из истории может увидеть ваши пароли и логины.

    А вот если бы мы указали методом POST то мы бы получили следующий запрос:
    POST /login.php (login=Андрей&password=123) то что в скобочках было бы скрыто и никак не сохранено в браузере.

    Теперь другая ситуация например форма поиска. Мы вводим текст и получаем страницу с результатами. Вот тут уместнее GET форма. потому что нам было бы удобно сразу иметь ссылку на результат поиска, то есть добавить в строку запроса можно выразится "Публичные параметры", которыми можно поделиться. И как результат в строке браузера будет конкретная ссылка на текущую страницу. Мы можем ее скопировать, и разместить где-нибудь, или например скинуть другу. И получить при переходе одну и ту же страницу. А не просить других людей зайти на сайт и в поиск вбить определенную фразу чтобы получить необходимую страницу.

    В общем подводя итог:
    GET - это чтобы получить определенную страницу в определенном виде ( сортировка, текущая страница в блоге, строка поиска и т.п. ).
    POST - для оправки данных которые не влияют на отображение страницы, в том плане что эти данные влияют только на результат выполнения скрипта ( логины, пароли, номера кредиток, сообщения и т.п. ).

    И еще одна хорошая новость их можно комбинировать, например
    POST /index.php?page=login (login=Андрей&password=123) Думаю я уже достаточно объяснил что из этого получится и какие параметры в какой массив попадут.
    Ответ написан
    2 комментария
  • Как работает кэш Инстаграм?

    iiiBird
    @iiiBird Куратор тега HTML
    Пока ты спишь - твой конкурент совершенствуется
    чистилка кэша есть тока у фейсбука. попробуй через нее https://developers.facebook.com/tools/debug
    вдруг у инсты тоже почистит.
    а если нет - то только ждать
    Ответ написан
    1 комментарий