Задать вопрос
  • Почему полигоны в игры состоят из треугольников?

    Stalker_RED
    @Stalker_RED
    Диёр Хайдаров, не, вы не поняли. Любая современная видеокарта работает с треугольниками. Если вы в блендере или ещё в чем создали прямоугольник - для видеокарты он все равно будет разбит на треугольники.
  • Как удалить сессию при закрытии вкладки/окна браузера?

    Stalker_RED
    @Stalker_RED
    AUser0, это кука с expire=0
    И то что оно как-то в фаерфоксе себя ведёт - не показатель. Оно может по другому вести себя в опере, сафари, мобильном хроме.
    Вот я пруфлинк даже принёс https://stackoverflow.com/questions/4132095/when-d...

    Юзер может вообще поставить не "стандартный" браузер, взять исходники хромиума, подправить работу с куками,и собрать.
    Все эти таймеры, cors и httponly - защита не от клиента-злоумышленника, а чтобы сложнее было устроить атаку на невиновного.
    Ну да ладно, я ушёл от темы.

    На самом деле, вопрос с доступом к учётке на перекуре решается административно. Пишется должностная инструкция, мол "уходя нажми WIN+L", и кто не нажал - сам дурак.
    А надёжно обнаружить закрытие вкладки НЕВОЗМОЖНО технически.
    Разве что в фоне пинговать, и отслеживать что пинг пропал. Но опять-же, это никак не отличить от "комп уснул" или "пропал интернет".

    Остаётся возня с сервер-сайд таймерами, которым плевать на наличие вкладок.
  • Как удалить сессию при закрытии вкладки/окна браузера?

    Stalker_RED
    @Stalker_RED
    AUser0, в хроме "восстановить закрытые вкладки?" восстановит их вместе с куками.
    А расширение session buddy восстановит их хоть через год. Отследить закрытие вкладки или окна технически невозможно: прекращение активности от вкладки не значит, что она закрыта, она может "спать". При закрытии хрома через taskkill, например, он никаких сигналов не отправит, и при следующем включении предложит восстановить вкладки даже при настройках по умолчанию.
    Вывод - следить надо на сервере, учитывая время неактивности.
  • Прокладка ethernet и коаксиального кабеля паралельно?

    Stalker_RED
    @Stalker_RED
    От кабеля электролиты ловил помеху на ЭЛТ мониторы сквозь железо-бетонную стену. От моторов конвейера ловил помеху на входы ардуинки.
    На Ethernet никогда ничего не замечал. Может быть скорость в какие-то моменты падала, но никто не жалуется, значит все ок.
  • Как удалить сессию при закрытии вкладки/окна браузера?

    Stalker_RED
    @Stalker_RED
    MZhack, я психанул и запилил огромній пример
    stalkerred.xtreemhost.com/test_session_expire.php

    по кнопке show src видно весь говнокод внутри.
    Вся суть этого примера в примерно пяти строчках
    if (is_expired()) {  // return $_SESSION['expire'] < time();
        logout(); // $_SESSION = ['msg' => 'logged out'];
    } else {
        enlarge_your_session(); // $_SESSION['expire'] = time() + SESSION_TIME_LIMIT;
    }

    В этом примере SESSION_TIME_LIMIT установлен на 20 секунд, но вы можете установить 3 минуты, или илюбое другое время, которое вам покажется разумным.
    И вам плевать на куки, gc_probability и прочую кухню. вы просто сравниваете две цифры, и если время прошло - logout.
    И плевать на окно браузера и его вкладки.
  • Как удалить сессию при закрытии вкладки/окна браузера?

    Stalker_RED
    @Stalker_RED
    MZhack, вы для начала сравните "какого эффекта я хочу добиться" и "что вообще умеют эти ваши браузеры". Мне кажется вы забираетесь в область невозможного.

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

    С клиента на сервер никакие уведомления об этом событии не отправляются.
    Механизмы прекращения сессии браузером - отключаются в браузере или расширениями.
    Даже если их никто не трогал - вы не можете отследить когда браузер убили через таскменеджер. или он завис, или из компа выдернули интернет, а потом закрыли вкладку, или вкладка "уснула" из-за неактивности, или комп ушел в гибернацию, утром проснулся, но вкладку никто не закрывал, или браузер вообще в виртуалке, и ее ставят на паузу вместе с браузером. Я могу еще странных сценариев набросать.

    Часть этих вопросов вы можете решить создав постоянное соединение с сервером, и следя за ним. Через вебсокет какой-нибудь. Но опять-же не все.

    Самое главное - непонятно зачем этот цирк. На хабре аутентификация слетает раз в несколько месяцев - и мне норм. В банке она слетает каждые несколько минут, для безопасности. и мне норм. И никто из нх не знает закрыл ли я вкладку, или она уже три года не закрывалась. Сервер обычно работает отправляя ответы н запросы, а не ведя учет вкладок у юзера.
  • Как удалить сессию при закрытии вкладки/окна браузера?

    Stalker_RED
    @Stalker_RED
    MZhack, use_strict_mode при чем тут вообще? Это чтобы юзеры не могли сами себе session id придумывать.
  • Как удалить сессию при закрытии вкладки/окна браузера?

    Stalker_RED
    @Stalker_RED
    MZhack, отправить через sendBeacon, например. Но Он же все равно не всегда будет отрабатывать, это решение не может быть основным механизмом. сам подход неплохо бы пересмотреть.
  • Откуда при рекурсии в консоли берутся B:1 и B:2?

    Stalker_RED
    @Stalker_RED
    fleshik, вот еще раскраску добавил, может так понятнее будет
    const meta = [
       {name: '%cпервый', style: 'color: red'},
       {name: '    %cвторой', style: 'color: green'},
       {name: '      %cтретий', style: 'color: blue'},
      ];
    
    function Operation(counter) {
      counter--;
      const callMeta = meta[2-counter];
    
      console.log(callMeta.name, callMeta.style, "A:", counter);
    
      if (counter != 0) {
        console.log(callMeta.name, callMeta.style, "IF сработал, идем глубже");
        Operation(counter);
      }
      console.log(callMeta.name, callMeta.style, '(продолжение)', "B:", counter);
    }
    
    Operation(3);
  • Откуда при рекурсии в консоли берутся B:1 и B:2?

    Stalker_RED
    @Stalker_RED
    fleshik, stack - это стопка. Буквально. Вот представляете себе стопку тарелок или стопку книг - это оно.

    Представьте пустой стол, и на него вы поклали картонку с надписью
    " выполнить Operation(3)" (у вас в коде это самая последняя строка)
    Затем вы убираете эту картонку со стола и кладете на стол пачку инструкций которые соответствуют этой картонке. Пачка составлена так, что те инструкции которые нужно выполнить в начале - вверху, а те что в конце лежал внизу. Вы берете по одной эти картонки и стопка уменьшается:

    1. уменьшить счетчик (стало 2)
    2. вывести в консоль А:2
    3. проверить не равен ли счетчик нулю (и если не равен, а так и есть)
    4. выполнить Operation(2)
      // в этот момент у вас на столе еще осталась инструкция  "вывести в консоль В:2" но вы не можете ее выполнять прямо сейчас
      // вы добавляете ПОВЕРХ этой инструкции еще одну пачку, которая соответствует Operation(2)
      5. Уменьшить счетчик (стало 1)
      6. вывести в консоль А:1
      7. проверить не равен ли счетчик нулю (и если не равен, а так и есть)
      8. выполнить Operation(1)
            // в этот момент у вас на столе еще осталась инструкция  "вывести в консоль В:1" но вы не можете ее выполнять прямо сейчас
            // а еще ниже, под ней, все еще лежит картонка "вывести в консоль В:2"
            // но вы добавляете ееще пачку
            9. уменьшить счетчик (стало 0)
            10. вывести в консоль А:0
            11. проверить не равен ли счетчик нулю (ура, он равен!)
            12. вывести В:0
        13.  и вы добрались до картонки с предыдущей стопки "вывести В:1"
    14. и вот последняя картонка "вывести В:2"
  • Откуда при рекурсии в консоли берутся B:1 и B:2?

    Stalker_RED
    @Stalker_RED
    fleshik, если грубо, то вот как вы видите в консоли, так оно и исполняется.
    function Operation(counter) {
      counter--;
      let call = 'вызов '.padStart((3-counter) * 4) +
        'третий,второй,первый'.split(',')[counter];
      
      console.log(call, "A:", counter);
    
      if (counter != 0) {
        console.log(call, "IF сработал, идем глубже");
        Operation(counter);
      }
      console.log(call, '(продолжение)', "B:", counter);
    }
    
    Operation(3);

    Если точнее, то event loop - штука посложнее чем просто стек, там еще таймеры всякие, обработка событий, и прочая асинхронщина. Но пока вам проще считать что это стек вызовов.
  • Почему локально видео не показывается?

    Stalker_RED
    @Stalker_RED
    olya_097, да, сейчас в консоли почему-то не показывает, но во вкладке сеть показывает. При открытии "из папки" запрос у ролику получается такой:
    file://www.youtube.com/embed/eoTpdTU8nTA
  • Как получить "хеш"/сравнить изображение?

    Stalker_RED
    @Stalker_RED
    Только для полностью идентичных файлов, отличие в одном пикселе или даже в мета-данных даст разный хеш.
  • От чего зависит куда будет зумиться сайт при ctrl + колёсико мыши? Так же как отключить зум на колесо мыши + ctrl?

    Stalker_RED
    @Stalker_RED
    Модератору, похоже, скучно. Если вдруг там была ссылка на туб-канал, то можно было заменить ее на рикролл. А зачем удалаять ссылки на эппл или стим - вообще загадка.
  • Как быть с кэшированием файлов (css, js, svg...) при их изменении?

    Stalker_RED
    @Stalker_RED
    Клиент может конечно подменить и файл в кеше, и во время загрузки страницы. Даже расширения есть для хрома, resource override, например. Можно инжектнуть свой код в неожиданные места, если не проверяются контрольные суммы
    https://developer.mozilla.org/en-US/docs/Web/Secur...
  • Как правильно отслеживать состояние формы?

    Stalker_RED
    @Stalker_RED
    Ага, то есть две формочки - логин и регистрация, и переключалка между ними. На ванильке это делается ну к примеру за час или два. А на реакте двое суток. Вердикт? Реакт - молодец.
  • Сколько времени хранить старый домен при переезде на новый?

    Stalker_RED
    @Stalker_RED
    mike02, вы можете проанализировать сколько трафика идет через старый домен, и когда его станет мало - отказаться от старого домена совсем.
    Порог этого "мало" - выбирать вам. 10 посещений в день это мало? А 100 посещений? А 10000?
  • Как решить проблемы интерполяции строк и доработать код чтобы работала пагинация при парсинге данных в php?

    Stalker_RED
    @Stalker_RED
    Inter_GLADOS, не переживайте, тупить - это норма.
    Я вам сейчас покажу даже точное место вашего тупняка: https://ideone.com/PusAbT
    Мусор на входе - мусор на выходе!